From 5d7835ea904b08a3f3f1dccaeae70f38622e9744 Mon Sep 17 00:00:00 2001 From: Radoslaw Jablonski Date: Mon, 2 Aug 2010 17:24:06 +0300 Subject: [PATCH] obexd: Fix NULL check for name param Added NULL checking for "name" param in pbap_open_* functions. If on this level this variable will be NULL, then setting -EBADR error code and ending function. This fixes many obexd crashes. --- obexd/plugins/pbap.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/obexd/plugins/pbap.c b/obexd/plugins/pbap.c index 2d3bebd17..7422a1e2d 100644 --- a/obexd/plugins/pbap.c +++ b/obexd/plugins/pbap.c @@ -555,7 +555,7 @@ static int pbap_get(struct obex_session *os, obex_object_t *obj, DBG("name %s type %s pbap %p", name, type, pbap); - if (type == NULL) + if (type == NULL || name == NULL) return -EBADR; rsize = obex_aparam_read(os, obj, &buffer); @@ -689,6 +689,11 @@ static void *vobject_pull_open(const char *name, int oflag, mode_t mode, goto fail; } + if (name == NULL) { + ret = -EBADR; + goto fail; + } + if (pbap->params->maxlistcount == 0) cb = phonebook_size_result; else @@ -720,6 +725,11 @@ static void *vobject_list_open(const char *name, int oflag, mode_t mode, goto fail; } + if (name == NULL) { + ret = -EBADR; + goto fail; + } + /* PullvCardListing always get the contacts from the cache */ if (pbap->cache.valid) { @@ -758,7 +768,7 @@ static void *vobject_vcard_open(const char *name, int oflag, mode_t mode, goto fail; } - if (sscanf(name, "%u.vcf", &handle) != 1) { + if (name == NULL || sscanf(name, "%u.vcf", &handle) != 1) { ret = -EBADR; goto fail; } -- 2.47.3