With perfect 20/20 hindsight I agree, but...
I'd be much more inclined to agree with this if the Standard
explicitly said
If the product nmemb * size cannot be represented as a
size_t, the calloc function returns NULL.
I wish the Standard did say that. This is really a grey area, a
longstanding source of bugs and misunderstanding. (See e.g. the
related c.l.c. FAQ 7.16.)
Without the explicit statement (and as the arguments presented by
several knowledgeable posters in this thread prove), I think an
implementor could be excused for assuming that the Standard's
intent was
If the product nmemb * size cannot be represented as a
size_t, the behavior is undefined.
...although since the Standard doesn't say *that* explicitly,
either, it's sort of doubly or meta undefined!