aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2020-05-17 19:47:45 +0200
committerDaniel Stenberg <daniel@haxx.se>2020-05-17 23:20:56 +0200
commit3df42ca949a8cd98c956e2ff127ee2a5d8ee8fef (patch)
tree3baafcaa6956296226e9a8c746c12155e4afa995
parent2c598cc77822b27eef5ee6c2810ed6da49ff95bf (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.md12
-rw-r--r--lib/dynbuf.c4
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;
}
/*