svn commit: samba r19039 - in branches: SAMBA_3_0/source/libads
SAMBA_3_0/source/utils SAMBA_3_0_23/source/libads
SAMBA_3_0_23/source/utils
gd at samba.org
gd at samba.org
Mon Oct 2 12:06:50 GMT 2006
Author: gd
Date: 2006-10-02 12:06:49 +0000 (Mon, 02 Oct 2006)
New Revision: 19039
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=19039
Log:
Do not segfault in "net ads printer info" when a requested printserver
does not exist.
Guenther
Modified:
branches/SAMBA_3_0/source/libads/ldap_printer.c
branches/SAMBA_3_0/source/utils/net_ads.c
branches/SAMBA_3_0_23/source/libads/ldap_printer.c
branches/SAMBA_3_0_23/source/utils/net_ads.c
Changeset:
Modified: branches/SAMBA_3_0/source/libads/ldap_printer.c
===================================================================
--- branches/SAMBA_3_0/source/libads/ldap_printer.c 2006-10-02 11:35:41 UTC (rev 19038)
+++ branches/SAMBA_3_0/source/libads/ldap_printer.c 2006-10-02 12:06:49 UTC (rev 19039)
@@ -41,8 +41,18 @@
servername));
return status;
}
+ if (ads_count_replies(ads, *res) != 1) {
+ return ADS_ERROR(LDAP_NO_SUCH_OBJECT);
+ }
srv_dn = ldap_get_dn(ads->ld, *res);
+ if (srv_dn == NULL) {
+ return ADS_ERROR(LDAP_NO_MEMORY);
+ }
srv_cn = ldap_explode_dn(srv_dn, 1);
+ if (srv_cn == NULL) {
+ ldap_memfree(srv_dn);
+ return ADS_ERROR(LDAP_INVALID_DN_SYNTAX);
+ }
ads_msgfree(ads, *res);
asprintf(&s, "(cn=%s-%s)", srv_cn[0], printer);
Modified: branches/SAMBA_3_0/source/utils/net_ads.c
===================================================================
--- branches/SAMBA_3_0/source/utils/net_ads.c 2006-10-02 11:35:41 UTC (rev 19038)
+++ branches/SAMBA_3_0/source/utils/net_ads.c 2006-10-02 12:06:49 UTC (rev 19039)
@@ -1634,7 +1634,8 @@
rc = ads_find_printer_on_server(ads, &res, printername, servername);
if (!ADS_ERR_OK(rc)) {
- d_fprintf(stderr, "ads_find_printer_on_server: %s\n", ads_errstr(rc));
+ d_fprintf(stderr, "Server '%s' not found: %s\n",
+ servername, ads_errstr(rc));
ads_msgfree(ads, res);
ads_destroy(&ads);
return -1;
Modified: branches/SAMBA_3_0_23/source/libads/ldap_printer.c
===================================================================
--- branches/SAMBA_3_0_23/source/libads/ldap_printer.c 2006-10-02 11:35:41 UTC (rev 19038)
+++ branches/SAMBA_3_0_23/source/libads/ldap_printer.c 2006-10-02 12:06:49 UTC (rev 19039)
@@ -40,8 +40,18 @@
servername));
return status;
}
+ if (ads_count_replies(ads, *res) != 1) {
+ return ADS_ERROR(LDAP_NO_SUCH_OBJECT);
+ }
srv_dn = ldap_get_dn(ads->ld, *res);
+ if (srv_dn == NULL) {
+ return ADS_ERROR(LDAP_NO_MEMORY);
+ }
srv_cn = ldap_explode_dn(srv_dn, 1);
+ if (srv_cn == NULL) {
+ ldap_memfree(srv_dn);
+ return ADS_ERROR(LDAP_INVALID_DN_SYNTAX);
+ }
ads_msgfree(ads, *res);
asprintf(&s, "(cn=%s-%s)", srv_cn[0], printer);
Modified: branches/SAMBA_3_0_23/source/utils/net_ads.c
===================================================================
--- branches/SAMBA_3_0_23/source/utils/net_ads.c 2006-10-02 11:35:41 UTC (rev 19038)
+++ branches/SAMBA_3_0_23/source/utils/net_ads.c 2006-10-02 12:06:49 UTC (rev 19039)
@@ -1426,7 +1426,8 @@
rc = ads_find_printer_on_server(ads, &res, printername, servername);
if (!ADS_ERR_OK(rc)) {
- d_fprintf(stderr, "ads_find_printer_on_server: %s\n", ads_errstr(rc));
+ d_fprintf(stderr, "Server '%s' not found: %s\n",
+ servername, ads_errstr(rc));
ads_msgfree(ads, res);
ads_destroy(&ads);
return -1;
More information about the samba-cvs
mailing list