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

Reply via email to