]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/t61.c
ITS#6684
[openldap] / libraries / libldap / t61.c
index 5cb25702e87b5cdf1811efff8e7e7b0b22d197e1..6a03e2ecc504926e7b1ebc21a0298ca1ac15a9e2 100644 (file)
@@ -1,7 +1,20 @@
 /* $OpenLDAP$ */
-/*
- * Copyright 2002 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 2002-2010 The OpenLDAP Foundation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
+ */
+/* ACKNOWLEDGEMENTS:
+ * This work was initially developed by Howard Chu for inclusion in
+ * OpenLDAP Software.
  */
 
 /*
@@ -332,7 +345,7 @@ int ldap_t61s_to_utf8s( struct berval *src, struct berval *dst )
                /* Invalid T.61 characters? */
                if (!t61_tab[*c]) 
                        return LDAP_INVALID_SYNTAX;
-               if (*c & 0xf0 == 0xc0) {
+               if ((*c & 0xf0) == 0xc0) {
                        int j = *c & 0x0f;
                        /* If this is the end of the string, or if the base
                         * character is just a space, treat this as a regular
@@ -368,7 +381,7 @@ int ldap_t61s_to_utf8s( struct berval *src, struct berval *dst )
                return LDAP_NO_MEMORY;
 
        for (i=0,c=(unsigned char *)src->bv_val; i < src->bv_len; c++,i++) {
-               if (*c & 0xf0 == 0xc0) {
+               if ((*c & 0xf0) == 0xc0) {
                        int j = *c & 0x0f;
                        /* If this is the end of the string, or if the base
                         * character is just a space, treat this as a regular
@@ -671,6 +684,8 @@ int ldap_utf8s_to_t61s( struct berval *src, struct berval *dst )
                        *d++ = 0x3f;
                        break;
                }
+               i += j;
+               c += j;
        }
        *d = '\0';
        return LDAP_SUCCESS;