summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorYuri Pankov <yuri.pankov@nexenta.com>2011-12-20 11:35:17 +0400
committerYuri Pankov <yuri.pankov@nexenta.com>2011-12-20 11:35:17 +0400
commitc28afb19581b550bf02e148f953e3b239421e1ee (patch)
tree2d39f7b9d5281be20c8b3de182397a2d3a06dd10 /usr/src
parent488bda50d513985dcc41e8aa180a296842c262bf (diff)
downloadillumos-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.c11
-rw-r--r--usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c9
-rw-r--r--usr/src/man/man3c/mktemp.3c6
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