1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

Fix more asprintf errors and error code paths.

Jeremy.
This commit is contained in:
Jeremy Allison 2008-12-23 11:27:19 -08:00
parent 7c6a20a439
commit b143938b8a
3 changed files with 36 additions and 12 deletions

View File

@ -603,7 +603,10 @@ got_connection:
/* Must use the userPrincipalName value here or sAMAccountName
and not servicePrincipalName; found by Guenther Deschner */
asprintf(&ads->auth.user_name, "%s$", global_myname() );
if (asprintf(&ads->auth.user_name, "%s$", global_myname() ) == -1) {
DEBUG(0,("ads_connect: asprintf fail.\n"));
ads->auth.user_name = NULL;
}
}
if (!ads->auth.realm) {
@ -619,10 +622,11 @@ got_connection:
/* this is a really nasty hack to avoid ADS DNS problems. It needs a patch
to MIT kerberos to work (tridge) */
{
char *env;
asprintf(&env, "KRB5_KDC_ADDRESS_%s", ads->config.realm);
setenv(env, ads->auth.kdc_server, 1);
free(env);
char *env = NULL;
if (asprintf(&env, "KRB5_KDC_ADDRESS_%s", ads->config.realm) > 0) {
setenv(env, ads->auth.kdc_server, 1);
free(env);
}
}
#endif

View File

@ -31,7 +31,7 @@
const char *servername)
{
ADS_STATUS status;
char *srv_dn, **srv_cn, *s;
char *srv_dn, **srv_cn, *s = NULL;
const char *attrs[] = {"*", "nTSecurityDescriptor", NULL};
status = ads_find_machine_acct(ads, res, servername);
@ -41,25 +41,43 @@
return status;
}
if (ads_count_replies(ads, *res) != 1) {
if (res) {
ads_msgfree(ads, *res);
*res = NULL;
}
return ADS_ERROR(LDAP_NO_SUCH_OBJECT);
}
srv_dn = ldap_get_dn(ads->ldap.ld, *res);
if (srv_dn == NULL) {
if (res) {
ads_msgfree(ads, *res);
*res = NULL;
}
return ADS_ERROR(LDAP_NO_MEMORY);
}
srv_cn = ldap_explode_dn(srv_dn, 1);
if (srv_cn == NULL) {
ldap_memfree(srv_dn);
if (res) {
ads_msgfree(ads, *res);
*res = NULL;
}
return ADS_ERROR(LDAP_INVALID_DN_SYNTAX);
}
ads_msgfree(ads, *res);
if (res) {
ads_msgfree(ads, *res);
*res = NULL;
}
asprintf(&s, "(cn=%s-%s)", srv_cn[0], printer);
if (asprintf(&s, "(cn=%s-%s)", srv_cn[0], printer) == -1) {
ldap_memfree(srv_dn);
return ADS_ERROR(LDAP_NO_MEMORY);
}
status = ads_search(ads, res, s, attrs);
ldap_memfree(srv_dn);
ldap_value_free(srv_cn);
free(s);
SAFE_FREE(s);
return status;
}

View File

@ -3381,7 +3381,7 @@ static WERROR nt_printer_unpublish_ads(ADS_STRUCT *ads,
NT_PRINTER_INFO_LEVEL *printer)
{
ADS_STATUS ads_rc;
LDAPMessage *res;
LDAPMessage *res = NULL;
char *prt_dn = NULL;
DEBUG(5, ("unpublishing printer %s\n", printer->info_2->printername));
@ -3390,7 +3390,7 @@ static WERROR nt_printer_unpublish_ads(ADS_STRUCT *ads,
ads_rc = ads_find_printer_on_server(ads, &res,
printer->info_2->sharename, global_myname());
if (ADS_ERR_OK(ads_rc) && ads_count_replies(ads, res)) {
if (ADS_ERR_OK(ads_rc) && res && ads_count_replies(ads, res)) {
prt_dn = ads_get_dn(ads, res);
if (!prt_dn) {
ads_msgfree(ads, res);
@ -3400,7 +3400,9 @@ static WERROR nt_printer_unpublish_ads(ADS_STRUCT *ads,
ads_memfree(ads, prt_dn);
}
ads_msgfree(ads, res);
if (res) {
ads_msgfree(ads, res);
}
return WERR_OK;
}