From: Chris Porter Date: Tue, 11 Mar 2008 23:52:48 +0000 (+0000) Subject: Fix broken valgrind getsstring semantics. X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/commitdiff_plain/732d880aaca26d1553229ab34a29d6797852ff98 Fix broken valgrind getsstring semantics. --- diff --git a/lib/sstring.c b/lib/sstring.c index 98fbcaeb..24a31e07 100644 --- a/lib/sstring.c +++ b/lib/sstring.c @@ -159,7 +159,6 @@ getstruct: void freesstring(sstring *inval) { int alloc; - /* Allow people to call this with a NULL value */ if (inval==NULL) @@ -221,13 +220,21 @@ void finisstring() { } sstring *getsstring(const char *inputstr, int maxlen) { - size_t len = strlen(inputstr); sstringlist *s; + size_t len; + char *p; + + if(!inputstr) + return NULL; + + for(p=(char *)inputstr;*p&&maxlen;maxlen--,p++) + ; /* empty */ + len = p - inputstr; s=(sstringlist *)malloc(sizeof(sstringlist) + sizeof(sstring)); - s->s->u.l.length = strlen(inputstr); - s->s->content=(char *)malloc(s->s->u.l.length + 1); + s->s->u.l.length = len; + s->s->content=(char *)malloc(len + 1); memcpy(s->s->content, inputstr, len); s->s->content[len] = '\0';