diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-02-02 12:02:43 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2004-02-02 12:02:43 +0000 |
commit | 423ad9097448e5a07ba26172302450ae7165d85a (patch) | |
tree | 7c6cc18230c045346176483f038cd708a1ef7f5c | |
parent | 590b60045d184a84659cfcb13c6a1a5039b51954 (diff) | |
download | samba-423ad9097448e5a07ba26172302450ae7165d85a.tar.gz samba-423ad9097448e5a07ba26172302450ae7165d85a.tar.bz2 samba-423ad9097448e5a07ba26172302450ae7165d85a.zip |
the conversion from int to size_t in charcnv did not take into account
one place where we checked "if (src_len > 0)".
I actually would greatly prefer to switch back to int for src_len. The
type *can* be negative, which means an unsigned type is
inappropriate. There is absolutely no reason why "int" should not be
used for a parameter like this.
I didn't change back to int as we are close to a release and I wanted
a mininal change, but please don't go changing types like this in
future without very careful testing and a damn good reason.
this bug broke pull_ucs2(), I would not be surprised if it caused all
sorts of nastiness. Thanks to vl for noticing the symptoms!
(This used to be commit 8b8f0c527959c707f274b435fc59156e37232981)
-rw-r--r-- | source3/lib/charcnv.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/source3/lib/charcnv.c b/source3/lib/charcnv.c index 5f9392b620..aed1b79a8e 100644 --- a/source3/lib/charcnv.c +++ b/source3/lib/charcnv.c @@ -921,7 +921,7 @@ size_t pull_ucs2(const void *base_ptr, char *dest, const void *src, size_t dest_ if (ucs2_align(base_ptr, src, flags)) { src = (const void *)((const char *)src + 1); - if (src_len > 0) + if (src_len != (size_t)-1) src_len--; } |