diff options
author | Andrew Tridgell <tridge@samba.org> | 2001-12-10 00:07:51 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2001-12-10 00:07:51 +0000 |
commit | 77c1376456765a7afe90afad96fab819fdcf8af3 (patch) | |
tree | f0081ae58b26960c51d1607d419986e5cb3f1037 | |
parent | ec4c90fd7f56f8870884e5a27622cae71d154eca (diff) | |
download | samba-77c1376456765a7afe90afad96fab819fdcf8af3.tar.gz |
explicitly encode NULL strings in the cache
-rw-r--r-- | source/nsswitch/winbindd_cache.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/source/nsswitch/winbindd_cache.c b/source/nsswitch/winbindd_cache.c index 4221e26ee1a..e78410e3a50 100644 --- a/source/nsswitch/winbindd_cache.c +++ b/source/nsswitch/winbindd_cache.c @@ -119,6 +119,12 @@ static char *centry_string(struct cache_entry *centry, TALLOC_CTX *mem_ctx) char *ret; len = centry_uint32(centry); + + if (len == 0xFFFF) { + /* a deliberate NULL string */ + return NULL; + } + if (centry->len - centry->ofs < len) { DEBUG(0,("centry corruption? needed %d bytes, have %d\n", len, centry->len - centry->ofs)); @@ -267,7 +273,15 @@ static void centry_put_uint32(struct cache_entry *centry, uint32 v) */ static void centry_put_string(struct cache_entry *centry, const char *s) { - int len = strlen(s); + int len; + + if (!s) { + /* null strings are marked as len 0xFFFF */ + centry_put_uint32(centry, 0xFFFF); + return; + } + + len = strlen(s); centry_put_uint32(centry, len); centry_expand(centry, len); memcpy(centry->data + centry->ofs, s, len); |