From f74a40ff85bfb9dbe74125b765746a2003717fbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Sat, 22 Oct 2005 12:49:00 +0000 Subject: [PATCH] =?UTF-8?q?Check=20return=20value=20from=20asprintf=20inst?= =?UTF-8?q?ead=20of=20string=20!=3D=20NULL=20since=20it=20undefined=20beha?= =?UTF-8?q?vior=20on=20Linux.=20From=20Bj=C3=B6rn=20Sandell?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16215 ec53bebd-3082-4978-b11e-865c3cabbd6b --- appl/ftp/ftp/gssapi.c | 4 ++-- appl/ftp/ftp/security.c | 12 +++++++++--- appl/ftp/ftpd/ftpd.c | 5 +++-- appl/ftp/ftpd/gss_userok.c | 3 +-- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/appl/ftp/ftp/gssapi.c b/appl/ftp/ftp/gssapi.c index 9b2d9ee7b..8e3a40d84 100644 --- a/appl/ftp/ftp/gssapi.c +++ b/appl/ftp/ftp/gssapi.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998 - 2003 Kungliga Tekniska Högskolan + * Copyright (c) 1998 - 2005 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -306,7 +306,7 @@ import_name(const char *kname, const char *host, gss_name_t *target_name) gss_buffer_desc name; name.length = asprintf((char**)&name.value, "%s@%s", kname, host); - if (name.value == NULL) { + if (name.length == -1) { printf("Out of memory\n"); return AUTH_ERROR; } diff --git a/appl/ftp/ftp/security.c b/appl/ftp/ftp/security.c index d9a0cde13..8b7fcbced 100644 --- a/appl/ftp/ftp/security.c +++ b/appl/ftp/ftp/security.c @@ -310,8 +310,11 @@ sec_vfprintf2(FILE *f, const char *fmt, va_list ap) if(data_prot == prot_clear) return vfprintf(f, fmt, ap); else { - vasprintf(&buf, fmt, ap); - ret = buffer_write(&out_buffer, buf, strlen(buf)); + int len; + len = vasprintf(&buf, fmt, ap); + if (len == -1) + return len; + ret = buffer_write(&out_buffer, buf, len); free(buf); return ret; } @@ -379,7 +382,10 @@ sec_vfprintf(FILE *f, const char *fmt, va_list ap) if(!sec_complete) return vfprintf(f, fmt, ap); - vasprintf(&buf, fmt, ap); + if (vasprintf(&buf, fmt, ap) == -1) { + printf("Failed to allocate command.\n"); + return -1; + } len = (*mech->encode)(app_data, buf, strlen(buf), command_prot, &enc); free(buf); if(len < 0) { diff --git a/appl/ftp/ftpd/ftpd.c b/appl/ftp/ftpd/ftpd.c index 81e91eba3..f7ce1e6a1 100644 --- a/appl/ftp/ftpd/ftpd.c +++ b/appl/ftp/ftpd/ftpd.c @@ -1023,9 +1023,10 @@ retrieve(const char *cmd, char *name) *tail = c; if (p->rev_cmd != NULL) { char *ext; + int ret; - asprintf(&ext, "%s%s", name, p->ext); - if (ext != NULL) { + ret = asprintf(&ext, "%s%s", name, p->ext); + if (ret != -1) { if (access(ext, R_OK) == 0) { snprintf (line, sizeof(line), p->rev_cmd, ext); diff --git a/appl/ftp/ftpd/gss_userok.c b/appl/ftp/ftpd/gss_userok.c index 4bde47e60..6da50ee98 100644 --- a/appl/ftp/ftpd/gss_userok.c +++ b/appl/ftp/ftpd/gss_userok.c @@ -105,8 +105,7 @@ gss_userok(void *app_data, char *username) chown (ticketfile, kpw->pw_uid, kpw->pw_gid); - asprintf(&k5ccname, "FILE:%s", ticketfile); - if (k5ccname) { + if (asprintf(&k5ccname, "FILE:%s", ticketfile) != -1) { esetenv ("KRB5CCNAME", k5ccname, 1); } afslog(NULL, 1);