diff options
Diffstat (limited to 'source3/lib/util_tdb.c')
-rw-r--r-- | source3/lib/util_tdb.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/source3/lib/util_tdb.c b/source3/lib/util_tdb.c index ade46bf18e..65e46119b4 100644 --- a/source3/lib/util_tdb.c +++ b/source3/lib/util_tdb.c @@ -410,7 +410,9 @@ int tdb_unpack(const uint8 *buf, int bufsize, const char *fmt, ...) case 'P': /* null-terminated string */ /* Return malloc'ed string. */ ps = va_arg(ap,char **); - len = strlen((const char *)buf) + 1; + len = strnlen((const char *)buf, bufsize) + 1; + if (bufsize < len) + goto no_space; *ps = SMB_STRDUP((const char *)buf); break; case 'f': /* null-terminated string */ |