New function (repost from php-cvs)
| From: | (Marcus Boerger) | Date: | Mon, 04 Mar 2002 19:44:34 +0000 |
| Subject: | New function (repost from php-cvs) | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-80702@lists.php.net to get a copy of this message | ||
hi guys,
what about a new function called strnlen str*n*len which will
return the length of a string with a given maximum to avoid
problems with strings not zero terminated.
i suggest we put this in a single .c file near strlcpy.c
/* {{{ php_strnlen
* get length of string if buffer if less than buffer size or buffer size */
static size_t php_strnlen( char* str, size_t maxlen) {
size_t len = 0;
if ( str && maxlen && *str) {
do {
len++;
} while ( --maxlen && *(++str));
}
return len;
}
/* }}} */
I already had a small discussion with Andy
Andi: There aren't supposed to be strings which aren't zero terminated and if there are it should be fixed (or am I missing something?).Of cause not but currently i am working on ext/exif and i cannot assume that a file is correct. So when i scan a buffer whose length i now i cannot exceed it's length when searching for NUL to determine its string length. I must stop searching for NUL if buffer end is reached. Also there are situations in which you have a string with now NUL from outside PHP (which was one of the many errors in exif.c) .... So i think i am not the only one who use this...(or shoul i say must use this for savety reasons?) marcus