svn commit: r199161 - user/kmacy/releng_7_2_xen/sys/xen/xenbus
Kip Macy
kmacy at FreeBSD.org
Wed Nov 11 00:46:55 UTC 2009
Author: kmacy
Date: Wed Nov 11 00:46:54 2009
New Revision: 199161
URL: http://svn.freebsd.org/changeset/base/199161
Log:
check for malloc failures
Modified:
user/kmacy/releng_7_2_xen/sys/xen/xenbus/xenbus_xs.c
Modified: user/kmacy/releng_7_2_xen/sys/xen/xenbus/xenbus_xs.c
==============================================================================
--- user/kmacy/releng_7_2_xen/sys/xen/xenbus/xenbus_xs.c Tue Nov 10 23:03:51 2009 (r199160)
+++ user/kmacy/releng_7_2_xen/sys/xen/xenbus/xenbus_xs.c Wed Nov 11 00:46:54 2009 (r199161)
@@ -332,8 +332,9 @@ join(const char *dir, const char *name)
{
char *buffer;
- buffer = malloc(strlen(dir) + strlen("/") + strlen(name) + 1,
- M_DEVBUF, M_WAITOK);
+ if ((buffer = malloc(strlen(dir) + strlen("/") + strlen(name) + 1,
+ M_DEVBUF, M_NOWAIT)) == NULL)
+ return (NULL);
strcpy(buffer, dir);
if (strcmp(name, "")) {
@@ -379,6 +380,9 @@ xenbus_directory(struct xenbus_transacti
int error;
path = join(dir, node);
+ if (path == NULL)
+ return (ENOMEM);
+
error = xs_single(t, XS_DIRECTORY, path, &len, (void **) &strings);
free(path, M_DEVBUF);
if (error)
@@ -562,8 +566,11 @@ xenbus_printf(struct xenbus_transaction
#define PRINTF_BUFFER_SIZE 4096
char *printf_buffer;
- printf_buffer = malloc(PRINTF_BUFFER_SIZE, M_DEVBUF, M_WAITOK);
+ printf_buffer = malloc(PRINTF_BUFFER_SIZE, M_DEVBUF, M_NOWAIT);
+ if (printf_buffer == NULL)
+ return (ENOMEM);
+
va_start(ap, fmt);
ret = vsnprintf(printf_buffer, PRINTF_BUFFER_SIZE, fmt, ap);
va_end(ap);
@@ -789,7 +796,9 @@ xs_process_msg(enum xsd_sockmsg_type *ty
char *body;
int error;
- msg = malloc(sizeof(*msg), M_DEVBUF, M_WAITOK);
+ if ((msg = malloc(sizeof(*msg), M_DEVBUF, M_NOWAIT)) == NULL)
+ return (ENOMEM);
+
mtx_lock(&xs_state.reply_lock);
error = xb_read(&msg->hdr, sizeof(msg->hdr), &xs_state.reply_lock.lock_object);
mtx_unlock(&xs_state.reply_lock);
@@ -798,7 +807,11 @@ xs_process_msg(enum xsd_sockmsg_type *ty
return (error);
}
- body = malloc(msg->hdr.len + 1, M_DEVBUF, M_WAITOK);
+ if ((body = malloc(msg->hdr.len + 1, M_DEVBUF, M_NOWAIT)) == NULL) {
+ free(msg, M_DEVBUF);
+ return (ENOMEM);
+ }
+
mtx_lock(&xs_state.reply_lock);
error = xb_read(body, msg->hdr.len, &xs_state.reply_lock.lock_object);
mtx_unlock(&xs_state.reply_lock);
More information about the svn-src-user
mailing list