The branch, v3-3-test has been updated
       via  e0f3ed481137d83087c4c6da6526eae3b9265838 (commit)
      from  51b10a39a764e91303ee40fde1b0c4b3a6f4574c (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test


- Log -----------------------------------------------------------------
commit e0f3ed481137d83087c4c6da6526eae3b9265838
Author: Jeremy Allison <j...@samba.org>
Date:   Tue Mar 31 18:29:30 2009 -0700

    Tidy up some convert_string_internal error cases, found by Andrew Bartlett.
    Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 source/lib/charcnv.c |   25 +++++++++++++++++++------
 1 files changed, 19 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/lib/charcnv.c b/source/lib/charcnv.c
index c3b3451..03b32c1 100644
--- a/source/lib/charcnv.c
+++ b/source/lib/charcnv.c
@@ -242,7 +242,7 @@ static size_t convert_string_internal(charset_t from, 
charset_t to,
                                        DEBUG(3,("convert_string_internal: 
Conversion error: %s(%s)\n",reason,inbuf));
                                if (allow_bad_conv)
                                        goto use_as_is;
-                               break;
+                               return (size_t)-1;
                        case E2BIG:
                                reason="No more room"; 
                                if (!conv_silent) {
@@ -263,11 +263,12 @@ static size_t convert_string_internal(charset_t from, 
charset_t to,
                                        DEBUG(3,("convert_string_internal: 
Conversion error: %s(%s)\n",reason,inbuf));
                                if (allow_bad_conv)
                                        goto use_as_is;
-                               break;
+                               
+                               return (size_t)-1;
                        default:
                                if (!conv_silent)
                                        DEBUG(0,("convert_string_internal: 
Conversion error: %s(%s)\n",reason,inbuf));
-                               break;
+                               return (size_t)-1;
                }
                /* smb_panic(reason); */
        }
@@ -412,7 +413,11 @@ size_t convert_string(charset_t from, charset_t to,
 #ifdef BROKEN_UNICODE_COMPOSE_CHARACTERS
                                goto general_case;
 #else
-                               return retval + convert_string_internal(from, 
to, p, slen, q, dlen, allow_bad_conv);
+                               size_t ret = convert_string_internal(from, to, 
p, slen, q, dlen, allow_bad_conv);
+                               if (ret == (size_t)-1) {
+                                       return ret;
+                               }
+                               return retval + ret;
 #endif
                        }
                }
@@ -448,7 +453,11 @@ size_t convert_string(charset_t from, charset_t to,
 #ifdef BROKEN_UNICODE_COMPOSE_CHARACTERS
                                goto general_case;
 #else
-                               return retval + convert_string_internal(from, 
to, p, slen, q, dlen, allow_bad_conv);
+                               size_t ret = convert_string_internal(from, to, 
p, slen, q, dlen, allow_bad_conv);
+                               if (ret == (size_t)-1) {
+                                       return ret;
+                               }
+                               return retval + ret;
 #endif
                        }
                }
@@ -484,7 +493,11 @@ size_t convert_string(charset_t from, charset_t to,
 #ifdef BROKEN_UNICODE_COMPOSE_CHARACTERS
                                goto general_case;
 #else
-                               return retval + convert_string_internal(from, 
to, p, slen, q, dlen, allow_bad_conv);
+                               size_t ret = convert_string_internal(from, to, 
p, slen, q, dlen, allow_bad_conv);
+                               if (ret == (size_t)-1) {
+                                       return ret;
+                               }
+                               return retval + ret;
 #endif
                        }
                }


-- 
Samba Shared Repository

Reply via email to