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;  }  /*  | 
