Mercurial > illumos > illumos-gate
changeset 13550:84f53d070f62
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>
author | Yuri Pankov <yuri.pankov@nexenta.com> |
---|---|
date | Tue, 20 Dec 2011 11:35:17 +0400 |
parents | 4bc299bbc356 |
children | 022a137cd76d |
files | usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c usr/src/man/man3c/mktemp.3c |
diffstat | 3 files changed, 16 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c Fri Dec 02 15:56:04 2011 -0500 +++ b/usr/src/lib/smbsrv/libsmb/common/smb_lgrp.c Tue Dec 20 11:35:17 2011 +0400 @@ -1104,16 +1104,21 @@ (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);
--- a/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c Fri Dec 02 15:56:04 2011 -0500 +++ b/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c Tue Dec 20 11:35:17 2011 +0400 @@ -2217,7 +2217,7 @@ 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 @@ 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,
--- a/usr/src/man/man3c/mktemp.3c Fri Dec 02 15:56:04 2011 -0500 +++ b/usr/src/man/man3c/mktemp.3c Tue Dec 20 11:35:17 2011 +0400 @@ -32,8 +32,8 @@ .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 @@ .nf #include <stdlib.h> \&... -char *template = "/tmp/fileXXXXXX"; +char template[] = "/tmp/fileXXXXXX"; char *ptr; ptr = mktemp(template); .fi