sasl_secret_t ends in a char [1] size. This means the extra character is implicit...
authorJeremy Allison <jra@samba.org>
Tue, 3 May 2011 20:53:30 +0000 (13:53 -0700)
committerJeremy Allison <jra@samba.org>
Wed, 4 May 2011 19:12:14 +0000 (12:12 -0700)
source4/auth/gensec/cyrus_sasl.c

index bd7664878c70d76593c84e803aadc337f764e518..4a4422645d8432a1c6bafe31c0ad68e83e0a94a4 100644 (file)
@@ -99,12 +99,12 @@ static int gensec_sasl_get_password(sasl_conn_t *conn, void *context, int id,
                *psecret = NULL;
                return SASL_OK;
        }
-       secret = talloc_size(gensec_security, sizeof(sasl_secret_t)+strlen(password));
+       secret = talloc_size(gensec_security, sizeof(sasl_secret_t)+strlen(password)+1);
        if (!secret) {
                return SASL_NOMEM;
        }
        secret->len = strlen(password);
-       safe_strcpy((char*)secret->data, password, secret->len+1);
+       strlcpy((char*)secret->data, password, secret->len+1);
        *psecret = secret;
        return SASL_OK;
 }