Re: linux strlen man page accepts NULL?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Jon,

On Mon, Aug 10, 2009 at 2:06 PM, Jon Grant <jg@xxxxxxxx> wrote:
> Hello
>
> 2009/8/7 Michael Kerrisk <mtk.manpages@xxxxxxxxxxxxxx>:
>> Jon,
>>
>> On Fri, Aug 7, 2009 at 1:55 PM, Jon Grant<jg@xxxxxxxx> wrote:
>>> Looking at this man page:
>>>
>>> http://linux.die.net/man/3/strlen
>>>
>>> Should it not mention that a NULL address is a valid param? Or is it
>>> not a valid param?
>>
>> What makes you think it is a valid parameter?
>
> NULL points to 0x0, which could be mapped to something.

D'oh! Sorry -- now I'm with you. Yes, it could.

> On my embedded
> platform it is the beginning of the boot ROM. However typically 0x0 is
> an invalid address, in which case strlen should check for NULL, and
> return 0

I don't think it should check for this. If the addres is invalid, it
should be treated like any other invalid address -- usually a SIGSEGV
results.

> e.g.:
>
> size_t strlen(const char *str)
> {
>        const char *s;
>
> if(str == NULL)
> {
>    return 0;
> }
>
>        for (s = str; *s; ++s)
>                ;
>        return (s - str);
> }
>
>>> On most systems NULL is a special error pointer.
>>
>> I don't understand what you mean with this last sentence. Please explain.
>
> Well, the purpose of strlen is to count chars (excluding terminating
> '\0') but on most systems address 0x0 [which is what NULL is, (void*)0
> ].
>
> So if something is mapped by the hardware at 0x0 address then strlen
> could be used to count the number of characters at that location.
> However, on most systems his 0x0 address (NULL) indicates an invalid
> address.
>
> I am not on this mailing list, so please keep my email address in any replies.

As far as I can see, there's nothing in the documentation that needs
to be fixed. I'm doubtful that glibc's strlen() should be fixed
either. I agree that mappings at 0x0 are a strange corner case that
can produce unusual results in cases like these.

Cheers,

Michael

-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Watch my Linux system programming book progress to publication!
http://blog.man7.org/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux