diff options
author | Daniel Stenberg <daniel@haxx.se> | 2020-05-17 19:47:45 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-05-17 23:20:56 +0200 |
commit | 3df42ca949a8cd98c956e2ff127ee2a5d8ee8fef (patch) | |
tree | 3baafcaa6956296226e9a8c746c12155e4afa995 | |
parent | 2c598cc77822b27eef5ee6c2810ed6da49ff95bf (diff) |
dynbuf: return NULL when there's no buffer length
... as returning a "" is not a good idea as the string is supposed to be
allocated and returning a const string will cause issues.
Reported-by: Brian Carpenter
Follow-up to ed35d6590e72c
Closes #5405
-rw-r--r-- | docs/DYNBUF.md | 12 | ||||
-rw-r--r-- | lib/dynbuf.c | 4 |
2 files changed, 8 insertions, 8 deletions
diff --git a/docs/DYNBUF.md b/docs/DYNBUF.md index 3ab059bae..550477ee1 100644 --- a/docs/DYNBUF.md +++ b/docs/DYNBUF.md @@ -60,17 +60,17 @@ larger than the buffer length. char *Curl_dyn_ptr(const struct dynbuf *s); -Returns a `char *` to the buffer. Since the buffer may be reallocated, this -pointer should not be trusted or used anymore after the next buffer -manipulation call. +Returns a `char *` to the buffer if it has a length, otherwise a NULL. Since +the buffer may be reallocated, this pointer should not be trusted or used +anymore after the next buffer manipulation call. ## uptr unsigned char *Curl_dyn_uptr(const struct dynbuf *s); -Returns an `unsigned char *` to the buffer. Since the buffer may be -reallocated, this pointer should not be trusted or used anymore after the next -buffer manipulation call. +Returns an `unsigned char *` to the buffer if it has a length, otherwise a +NULL. Since the buffer may be reallocated, this pointer should not be trusted +or used anymore after the next buffer manipulation call. ## len diff --git a/lib/dynbuf.c b/lib/dynbuf.c index 64004952f..dfc1d05c6 100644 --- a/lib/dynbuf.c +++ b/lib/dynbuf.c @@ -201,7 +201,7 @@ char *Curl_dyn_ptr(const struct dynbuf *s) DEBUGASSERT(s); DEBUGASSERT(s->init == DYNINIT); DEBUGASSERT(!s->leng || s->bufr); - return s->leng ? s->bufr : (char *)""; + return s->bufr; } /* @@ -212,7 +212,7 @@ unsigned char *Curl_dyn_uptr(const struct dynbuf *s) DEBUGASSERT(s); DEBUGASSERT(s->init == DYNINIT); DEBUGASSERT(!s->leng || s->bufr); - return s->leng ? (unsigned char *)s->bufr : (unsigned char *)""; + return (unsigned char *)s->bufr; } /* |