diff options
| author | Richard Nyberg <rnyberg@murmeldjur.se> | 2006-02-08 16:37:32 +0000 |
|---|---|---|
| committer | Richard Nyberg <rnyberg@murmeldjur.se> | 2006-02-08 16:37:32 +0000 |
| commit | b0c4f58f10f547e3f3e35a321b4fd9fb6fa979d4 (patch) | |
| tree | 10df94b7814519d03eab9551bc2b688463dd0d1f | |
| parent | d88c65e9829e2de9556a72acd65ff8caacb7d947 (diff) | |
| download | btpd-b0c4f58f10f547e3f3e35a321b4fd9fb6fa979d4.tar.gz btpd-b0c4f58f10f547e3f3e35a321b4fd9fb6fa979d4.zip | |
Use strtoul to parse length of strings.
| -rw-r--r-- | misc/benc.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/misc/benc.c b/misc/benc.c index 96fdd34..5f25769 100644 --- a/misc/benc.c +++ b/misc/benc.c @@ -133,18 +133,12 @@ benc_mem(const char *p, size_t *len, const char**next) { if (!benc_isstr(p)) return NULL; - size_t blen = 0; - blen = *p - '0'; - p++; - while (isdigit(*p)) { - blen *= 10; - blen += *p - '0'; - p++; - } - assert(*p == ':'); + char *endptr; + size_t blen = strtoul(p, &endptr, 10); + assert(*endptr == ':'); benc_safeset(len, blen); - benc_safeset(next, *(p + blen + 1) == 'e' ? NULL : p + blen + 1); - return p + 1; + benc_safeset(next, *(endptr + blen + 1) == 'e' ? NULL : endptr + blen + 1); + return endptr + 1; } char * |