diff options
author | Yuri Pankov <yuri.pankov@nexenta.com> | 2011-12-20 11:35:17 +0400 |
---|---|---|
committer | Yuri Pankov <yuri.pankov@nexenta.com> | 2011-12-20 11:35:17 +0400 |
commit | c28afb19581b550bf02e148f953e3b239421e1ee (patch) | |
tree | 2d39f7b9d5281be20c8b3de182397a2d3a06dd10 /usr/src | |
parent | 488bda50d513985dcc41e8aa180a296842c262bf (diff) | |
download | illumos-joyent-c28afb19581b550bf02e148f953e3b239421e1ee.tar.gz |
1863 gcc compiled libsmb coredumps in trim_whitespace
1866 libsmbns is passing constant string to mktemp(3C)
1867 mktemp(3) gives bad advice in EXAMPLES section
Reviewed by: Richard Lowe <richlowe@richlowe.net>
Reviewed by: Gordon Ross <gordon.w.ross@gmail.com>
Approved by: Albert Lee <trisk@nexenta.com>
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c | 11 | ||||
-rw-r--r-- | usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c | 9 | ||||
-rw-r--r-- | usr/src/man/man3c/mktemp.3c | 6 |
3 files changed, 16 insertions, 10 deletions
diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c b/usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c index 8435a20c32..406d7c5db0 100644 --- a/usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c +++ b/usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c @@ -1104,16 +1104,21 @@ smb_lgrp_start(void) (void) mutex_unlock(&smb_localgrp.lg_mutex); for (i = 0; i < ngrp; i++) { + char *tname; + if ((wka = smb_wka_lookup_name(builtin[i])) == NULL) continue; - if (!smb_lgrp_exists(wka->wka_name)) { - rc = smb_lgrp_add(wka->wka_name, wka->wka_desc); + if ((tname = strdup(wka->wka_name)) == NULL) + return (SMB_LGRP_NO_MEMORY); + if (!smb_lgrp_exists(tname)) { + rc = smb_lgrp_add(tname, wka->wka_desc); if (rc != SMB_LGRP_SUCCESS) { syslog(LOG_DEBUG, "failed to add %s", - wka->wka_name); + tname); } } + free(tname); } return (SMB_LGRP_SUCCESS); diff --git a/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c b/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c index 0dbde7ff3d..5626d270ab 100644 --- a/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c +++ b/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c @@ -2217,7 +2217,7 @@ smb_ads_join(char *domain, char *user, char *usr_passwd, char *machine_passwd, int dclevel, num, usrctl_flags = 0; smb_ads_qstat_t qstat; char dn[SMB_ADS_DN_MAX]; - char *tmpfile; + char tmpfile[] = SMBNS_KRB5_KEYTAB_TMP; int cnt; smb_krb5_pn_set_t spns; @@ -2332,9 +2332,10 @@ smb_ads_join(char *domain, char *user, char *usr_passwd, char *machine_passwd, goto adjoin_cleanup; } - tmpfile = mktemp(SMBNS_KRB5_KEYTAB_TMP); - if (tmpfile == NULL) - tmpfile = SMBNS_KRB5_KEYTAB_TMP; + if (mktemp(tmpfile) == NULL) { + rc = SMB_ADJOIN_ERR_WRITE_KEYTAB; + goto adjoin_cleanup; + } encptr = smb_ads_get_enctypes(dclevel, &num); if (smb_krb5_kt_populate(ctx, ah->domain, krb5princs, cnt, diff --git a/usr/src/man/man3c/mktemp.3c b/usr/src/man/man3c/mktemp.3c index 2a280330cd..ea14551e0d 100644 --- a/usr/src/man/man3c/mktemp.3c +++ b/usr/src/man/man3c/mktemp.3c @@ -32,8 +32,8 @@ created for each unique \fItemplate\fR. .SH RETURN VALUES .sp .LP -The \fBmktemp()\fR function returns the pointer \fItemplate\fR. If a unique -name cannot be created, \fItemplate\fR points to a null string. +The \fBmktemp()\fR function returns a pointer to the \fItemplate\fR on success +and \fBNULL\fR if unique name cannot be created. .SH ERRORS .sp .LP @@ -52,7 +52,7 @@ pointer to the "template" string that contains the new filename. .nf #include <stdlib.h> \&... -char *template = "/tmp/fileXXXXXX"; +char template[] = "/tmp/fileXXXXXX"; char *ptr; ptr = mktemp(template); .fi |