To me it seems more reasonable to draw the insanity line at returning NULL for a successful zero byte allocation.
(While it's true that dereferencing a pointer to a zero byte allocation should probably trigger undefined behavior that doesn't mean that it shouldn't be possible to do the != NULL test to see if the allocation was successful.)