The branch, master has been updated via ed051ce424a93e08f59cd65ae0abe1a8926286a3 (commit) via 011f103501e9465fbea56194910e082306bbf1f1 (commit) from 3b5c6bc971c4e5c32b19072f0f54258792d00439 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit ed051ce424a93e08f59cd65ae0abe1a8926286a3 Author: Andrew Tridgell <tri...@samba.org> Date: Wed Aug 12 15:34:03 2009 +1000 try to give some hint as to what is causing NDR string errors commit 011f103501e9465fbea56194910e082306bbf1f1 Author: Andrew Tridgell <tri...@samba.org> Date: Wed Aug 12 15:33:37 2009 +1000 when we get an NDR error in the logs, it is useful to know where it happened ----------------------------------------------------------------------- Summary of changes: librpc/ndr/libndr.h | 2 +- pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm | 10 +++++----- source4/librpc/ndr/ndr_string.c | 16 ++++++++-------- 3 files changed, 14 insertions(+), 14 deletions(-) Changeset truncated at 500 lines: diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h index 7109b73..53bed01 100644 --- a/librpc/ndr/libndr.h +++ b/librpc/ndr/libndr.h @@ -215,7 +215,7 @@ enum ndr_compression_alg { #define NDR_PULL_NEED_BYTES(ndr, n) do { \ if ((n) > ndr->data_size || ndr->offset + (n) > ndr->data_size) { \ - return ndr_pull_error(ndr, NDR_ERR_BUFSIZE, "Pull bytes %u", (unsigned)n); \ + return ndr_pull_error(ndr, NDR_ERR_BUFSIZE, "Pull bytes %u (%s)", (unsigned)n, __location__); \ } \ } while(0) diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm index 3e724c9..cc8085a 100644 --- a/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm +++ b/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm @@ -1669,7 +1669,7 @@ sub ParseUnionPushPrimitives($$$$) } if (! $have_default) { $self->pidl("default:"); - $self->pidl("\treturn ndr_push_error($ndr, NDR_ERR_BAD_SWITCH, \"Bad switch value \%u\", level);"); + $self->pidl("\treturn ndr_push_error($ndr, NDR_ERR_BAD_SWITCH, \"Bad switch value \%u at \%s\", level, __location__);"); } $self->deindent; $self->pidl("}"); @@ -1705,7 +1705,7 @@ sub ParseUnionPushDeferred($$$$) } if (! $have_default) { $self->pidl("default:"); - $self->pidl("\treturn ndr_push_error($ndr, NDR_ERR_BAD_SWITCH, \"Bad switch value \%u\", level);"); + $self->pidl("\treturn ndr_push_error($ndr, NDR_ERR_BAD_SWITCH, \"Bad switch value \%u at \%s\", level, __location__);"); } $self->deindent; $self->pidl("}"); @@ -1784,7 +1784,7 @@ sub ParseUnionPullPrimitives($$$$$) if (defined($switch_type)) { $self->pidl("NDR_CHECK(ndr_pull_$switch_type($ndr, NDR_SCALARS, &_level));"); $self->pidl("if (_level != level) {"); - $self->pidl("\treturn ndr_pull_error($ndr, NDR_ERR_BAD_SWITCH, \"Bad switch value %u for $varname\", _level);"); + $self->pidl("\treturn ndr_pull_error($ndr, NDR_ERR_BAD_SWITCH, \"Bad switch value %u for $varname at \%s\", _level, __location__);"); $self->pidl("}"); } @@ -1814,7 +1814,7 @@ sub ParseUnionPullPrimitives($$$$$) } if (! $have_default) { $self->pidl("default:"); - $self->pidl("\treturn ndr_pull_error($ndr, NDR_ERR_BAD_SWITCH, \"Bad switch value \%u\", level);"); + $self->pidl("\treturn ndr_pull_error($ndr, NDR_ERR_BAD_SWITCH, \"Bad switch value \%u at \%s\", level, __location__);"); } $self->deindent; $self->pidl("}"); @@ -1848,7 +1848,7 @@ sub ParseUnionPullDeferred($$$$) } if (! $have_default) { $self->pidl("default:"); - $self->pidl("\treturn ndr_pull_error($ndr, NDR_ERR_BAD_SWITCH, \"Bad switch value \%u\", level);"); + $self->pidl("\treturn ndr_pull_error($ndr, NDR_ERR_BAD_SWITCH, \"Bad switch value \%u at \%s\", level, __location__);"); } $self->deindent; $self->pidl("}"); diff --git a/source4/librpc/ndr/ndr_string.c b/source4/librpc/ndr/ndr_string.c index d6d9968..d4e04c1 100644 --- a/source4/librpc/ndr/ndr_string.c +++ b/source4/librpc/ndr/ndr_string.c @@ -87,7 +87,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags, (len2 + c_len_term)*byte_mul, (void **)&as, &ret, false)) { return ndr_pull_error(ndr, NDR_ERR_CHARCNV, - "Bad character conversion"); + "Bad character conversion with flags 0x%x", flags); } } NDR_CHECK(ndr_pull_advance(ndr, (len2 + c_len_term)*byte_mul)); @@ -124,7 +124,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags, (len1 + c_len_term)*byte_mul, (void **)&as, &ret, false)) { return ndr_pull_error(ndr, NDR_ERR_CHARCNV, - "Bad character conversion"); + "Bad character conversion with flags 0x%x", flags); } } NDR_CHECK(ndr_pull_advance(ndr, (len1 + c_len_term)*byte_mul)); @@ -162,7 +162,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags, (len1 + c_len_term)*byte_mul, (void **)&as, &ret, false)) { return ndr_pull_error(ndr, NDR_ERR_CHARCNV, - "Bad character conversion"); + "Bad character conversion with flags 0x%x", flags); } } NDR_CHECK(ndr_pull_advance(ndr, (len1 + c_len_term)*byte_mul)); @@ -196,7 +196,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags, (len3 + c_len_term)*byte_mul, (void **)&as, &ret, false)) { return ndr_pull_error(ndr, NDR_ERR_CHARCNV, - "Bad character conversion"); + "Bad character conversion with flags 0x%x", flags); } } NDR_CHECK(ndr_pull_advance(ndr, (len3 + c_len_term)*byte_mul)); @@ -228,7 +228,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags, len3, (void **)&as, &ret, false)) { return ndr_pull_error(ndr, NDR_ERR_CHARCNV, - "Bad character conversion"); + "Bad character conversion with flags 0x%x", flags); } } NDR_CHECK(ndr_pull_advance(ndr, len3)); @@ -247,7 +247,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags, len1, (void **)&as, &ret, false)) { return ndr_pull_error(ndr, NDR_ERR_CHARCNV, - "Bad character conversion"); + "Bad character conversion with flags 0x%x", flags); } NDR_CHECK(ndr_pull_advance(ndr, len1)); *s = as; @@ -272,7 +272,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags, len1, (void **)&as, &ret, false)) { return ndr_pull_error(ndr, NDR_ERR_CHARCNV, - "Bad character conversion"); + "Bad character conversion with flags 0x%x", flags); } } NDR_CHECK(ndr_pull_advance(ndr, len1)); @@ -329,7 +329,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_string(struct ndr_push *ndr, int ndr_flags, } if (!convert_string_talloc_convenience(ndr, ndr->iconv_convenience, CH_UNIX, chset, s, s_len, (void **)&dest, &d_len, false)) { return ndr_push_error(ndr, NDR_ERR_CHARCNV, - "Bad character conversion"); + "Bad character push conversion with flags 0x%x", flags); } if (flags & LIBNDR_FLAG_STR_BYTESIZE) { -- Samba Shared Repository