On 11/10/2016 10:14, Yao Qi wrote: > On Fri, Oct 7, 2016 at 6:27 PM, Martin Sebor <msebor@xxxxxxxxx> wrote: > >> Right. In a hosted environment argv must not be null. It's >> up to the implementation to guarantee that for all conforming >> programs. If a program is non-conforming (e.g., it calls exceve >> or its equivalent to start a program with a null argv) it's still >> up to the implementation to decide what to do with it (it could >> simply punt and pass the null through or it could substitute >> an array of pointers for it with the first one set to null). > > Thanks for your answer, Martin. Looks like the argv can be NULL > in reality. Sounds like saying "strlen's argument can be NULL in reality". (Which is true, as nothing stops one from writing strlen(NULL) in their code.) Passing NULL to strlen has undefined behavior, thus (most) libc implementations won't check for NULL. Regards.