Author: gd
Date: 2006-11-01 10:38:54 +0000 (Wed, 01 Nov 2006)
New Revision: 19524

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=19524

Log:
Stop "net ads user delete" from doing funny things.

Guenther

Modified:
   branches/SAMBA_3_0/source/utils/net_ads.c
   branches/SAMBA_3_0_23/source/utils/net_ads.c
   branches/SAMBA_3_0_24/source/utils/net_ads.c


Changeset:
Modified: branches/SAMBA_3_0/source/utils/net_ads.c
===================================================================
--- branches/SAMBA_3_0/source/utils/net_ads.c   2006-11-01 09:57:56 UTC (rev 
19523)
+++ branches/SAMBA_3_0/source/utils/net_ads.c   2006-11-01 10:38:54 UTC (rev 
19524)
@@ -574,7 +574,7 @@
 {
        ADS_STRUCT *ads;
        ADS_STATUS rc;
-       LDAPMessage *res;
+       LDAPMessage *res = NULL;
        char *userdn;
 
        if (argc < 1) {
@@ -586,8 +586,9 @@
        }
 
        rc = ads_find_user_acct(ads, &res, argv[0]);
-       if (!ADS_ERR_OK(rc)) {
+       if (!ADS_ERR_OK(rc) || ads_count_replies(ads, res) != 1) {
                d_printf("User %s does not exist.\n", argv[0]);
+               ads_msgfree(ads, res);
                ads_destroy(&ads);
                return -1;
        }
@@ -595,7 +596,7 @@
        ads_msgfree(ads, res);
        rc = ads_del_dn(ads, userdn);
        ads_memfree(ads, userdn);
-       if (!ADS_ERR_OK(rc)) {
+       if (ADS_ERR_OK(rc)) {
                d_printf("User %s deleted\n", argv[0]);
                ads_destroy(&ads);
                return 0;

Modified: branches/SAMBA_3_0_23/source/utils/net_ads.c
===================================================================
--- branches/SAMBA_3_0_23/source/utils/net_ads.c        2006-11-01 09:57:56 UTC 
(rev 19523)
+++ branches/SAMBA_3_0_23/source/utils/net_ads.c        2006-11-01 10:38:54 UTC 
(rev 19524)
@@ -537,7 +537,7 @@
 {
        ADS_STRUCT *ads;
        ADS_STATUS rc;
-       void *res;
+       void *res = NULL;
        char *userdn;
 
        if (argc < 1) {
@@ -549,8 +549,9 @@
        }
 
        rc = ads_find_user_acct(ads, &res, argv[0]);
-       if (!ADS_ERR_OK(rc)) {
+       if (!ADS_ERR_OK(rc) || ads_count_replies(ads, res) != 1) {
                DEBUG(0, ("User %s does not exist\n", argv[0]));
+               ads_msgfree(ads, res);
                ads_destroy(&ads);
                return -1;
        }
@@ -558,7 +559,7 @@
        ads_msgfree(ads, res);
        rc = ads_del_dn(ads, userdn);
        ads_memfree(ads, userdn);
-       if (!ADS_ERR_OK(rc)) {
+       if (ADS_ERR_OK(rc)) {
                d_printf("User %s deleted\n", argv[0]);
                ads_destroy(&ads);
                return 0;

Modified: branches/SAMBA_3_0_24/source/utils/net_ads.c
===================================================================
--- branches/SAMBA_3_0_24/source/utils/net_ads.c        2006-11-01 09:57:56 UTC 
(rev 19523)
+++ branches/SAMBA_3_0_24/source/utils/net_ads.c        2006-11-01 10:38:54 UTC 
(rev 19524)
@@ -558,7 +558,7 @@
 {
        ADS_STRUCT *ads;
        ADS_STATUS rc;
-       void *res;
+       void *res = NULL;
        char *userdn;
 
        if (argc < 1) {
@@ -570,8 +570,9 @@
        }
 
        rc = ads_find_user_acct(ads, &res, argv[0]);
-       if (!ADS_ERR_OK(rc)) {
+       if (!ADS_ERR_OK(rc) || ads_count_replies(ads, res) != 1) {
                DEBUG(0, ("User %s does not exist\n", argv[0]));
+               ads_msgfree(ads, res);
                ads_destroy(&ads);
                return -1;
        }
@@ -579,7 +580,7 @@
        ads_msgfree(ads, res);
        rc = ads_del_dn(ads, userdn);
        ads_memfree(ads, userdn);
-       if (!ADS_ERR_OK(rc)) {
+       if (ADS_ERR_OK(rc)) {
                d_printf("User %s deleted\n", argv[0]);
                ads_destroy(&ads);
                return 0;

Reply via email to