protect all exported functions by checking the input parameters for NULL input
authorRichard Hughes <richard@hughsie.com>
Sun Jun 29 17:32:19 2008 +0100 (2008-06-29)
changeset 3014124c37fd953
parent 300 455eaa569767
child 302 9b71b537d175
protect all exported functions by checking the input parameters for NULL input
librazor/iterator.c
librazor/razor.c
librazor/root.c
librazor/rpm.c
librazor/transaction.c
     1.1 --- a/librazor/iterator.c	Sun Jun 29 10:55:17 2008 +0100
     1.2 +++ b/librazor/iterator.c	Sun Jun 29 17:32:19 2008 +0100
     1.3 @@ -20,6 +20,8 @@
     1.4  #define _GNU_SOURCE
     1.5  
     1.6  #include <string.h>
     1.7 +#include <assert.h>
     1.8 +
     1.9  #include "razor-internal.h"
    1.10  #include "razor.h"
    1.11  
    1.12 @@ -48,6 +50,8 @@
    1.13  {
    1.14  	struct razor_package_iterator *pi;
    1.15  
    1.16 +	assert (set != NULL);
    1.17 +
    1.18  	pi = zalloc(sizeof *pi);
    1.19  	pi->set = set;
    1.20  	pi->end = set->packages.data + set->packages.size;
    1.21 @@ -61,6 +65,10 @@
    1.22  					 struct razor_set *set,
    1.23  					 struct razor_property *property)
    1.24  {
    1.25 +	assert (pi != NULL);
    1.26 +	assert (set != NULL);
    1.27 +	assert (property != NULL);
    1.28 +
    1.29  	memset(pi, 0, sizeof *pi);
    1.30  	pi->set = set;
    1.31  	pi->index = list_first(&property->packages, &set->package_pool);
    1.32 @@ -72,6 +80,9 @@
    1.33  {
    1.34  	struct list *index;
    1.35  
    1.36 +	assert (set != NULL);
    1.37 +	assert (property != NULL);
    1.38 +
    1.39  	index = list_first(&property->packages, &set->package_pool);
    1.40  	return razor_package_iterator_create_with_index(set, index);
    1.41  }
    1.42 @@ -83,6 +94,9 @@
    1.43  	struct razor_entry *entry;
    1.44  	struct list *index;
    1.45  
    1.46 +	assert (set != NULL);
    1.47 +	assert (filename != NULL);
    1.48 +
    1.49  	entry = razor_set_find_entry(set, set->files.data, filename);
    1.50  	if (entry == NULL)
    1.51  		return razor_package_iterator_create_empty(set);
    1.52 @@ -102,6 +116,8 @@
    1.53  	int valid;
    1.54  	struct razor_package *p, *packages;
    1.55  
    1.56 +	assert (pi != NULL);
    1.57 +
    1.58  	if (pi->package) {
    1.59  		p = pi->package++;
    1.60  		valid = p < pi->end;
    1.61 @@ -129,6 +145,8 @@
    1.62  RAZOR_EXPORT void
    1.63  razor_package_iterator_destroy(struct razor_package_iterator *pi)
    1.64  {
    1.65 +	assert (pi != NULL);
    1.66 +
    1.67  	if (pi->free_index)
    1.68  		free(pi->index);
    1.69  
    1.70 @@ -141,6 +159,9 @@
    1.71  {
    1.72  	struct razor_property_iterator *pi;
    1.73  
    1.74 +	assert (set != NULL);
    1.75 +	assert (package != NULL);
    1.76 +
    1.77  	pi = zalloc(sizeof *pi);
    1.78  	pi->set = set;
    1.79  
    1.80 @@ -166,6 +187,8 @@
    1.81  	int valid;
    1.82  	struct razor_property *p, *properties;
    1.83  
    1.84 +	assert (pi != NULL);
    1.85 +
    1.86  	if (pi->property) {
    1.87  		p = pi->property++;
    1.88  		valid = p < pi->end;
    1.89 @@ -208,6 +231,8 @@
    1.90  	struct razor_package_query *pq;
    1.91  	int count;
    1.92  
    1.93 +	assert (set != NULL);
    1.94 +
    1.95  	pq = zalloc(sizeof *pq);
    1.96  	pq->set = set;
    1.97  	count = set->packages.size / sizeof(struct razor_package);
    1.98 @@ -222,6 +247,9 @@
    1.99  {
   1.100  	struct razor_package *packages;
   1.101  
   1.102 +	assert (pq != NULL);
   1.103 +	assert (p != NULL);
   1.104 +
   1.105  	packages = pq->set->packages.data;
   1.106  	pq->count += pq->vector[p - packages] ^ 1;
   1.107  	pq->vector[p - packages] = 1;
   1.108 @@ -234,6 +262,9 @@
   1.109  	struct razor_package *packages, *p;
   1.110  	const char *name, *version, *arch;
   1.111  
   1.112 +	assert (pq != NULL);
   1.113 +	assert (pi != NULL);
   1.114 +
   1.115  	packages = pq->set->packages.data;
   1.116  	while (razor_package_iterator_next(pi, &p, &name, &version, &arch)) {
   1.117  		pq->count += pq->vector[p - packages] ^ 1;
   1.118 @@ -249,6 +280,8 @@
   1.119  	struct list *index;
   1.120  	int i, j;
   1.121  
   1.122 +	assert (pq != NULL);
   1.123 +
   1.124  	set = pq->set;
   1.125  	if (pq->count > 0)
   1.126  		index = zalloc(pq->count * sizeof *index);
     2.1 --- a/librazor/razor.c	Sun Jun 29 10:55:17 2008 +0100
     2.2 +++ b/librazor/razor.c	Sun Jun 29 17:32:19 2008 +0100
     2.3 @@ -32,6 +32,7 @@
     2.4  #include <errno.h>
     2.5  #include <ctype.h>
     2.6  #include <fnmatch.h>
     2.7 +#include <assert.h>
     2.8  
     2.9  #include "razor-internal.h"
    2.10  #include "razor.h"
    2.11 @@ -127,6 +128,9 @@
    2.12  	struct array *array;
    2.13  	int fd;
    2.14  
    2.15 +	assert (set != NULL);
    2.16 +	assert (filename != NULL);
    2.17 +
    2.18  	fd = open(filename, O_RDONLY);
    2.19  	if (fstat(fd, &stat) < 0)
    2.20  		return -1;
    2.21 @@ -157,6 +161,9 @@
    2.22  	struct array *array;
    2.23  	int fd;
    2.24  
    2.25 +	assert (set != NULL);
    2.26 +	assert (filename != NULL);
    2.27 +
    2.28  	fd = open(filename, O_RDONLY);
    2.29  	if (fstat(fd, &stat) < 0)
    2.30  		return -1;
    2.31 @@ -186,6 +193,8 @@
    2.32  	struct array *a;
    2.33  	int i;
    2.34  
    2.35 +	assert (set != NULL);
    2.36 +
    2.37  	if (set->header) {
    2.38  		for (i = 0; set->header->sections[i].type; i++)
    2.39  			;
    2.40 @@ -340,6 +349,9 @@
    2.41  	long n1, n2;
    2.42  	int res;
    2.43  
    2.44 +	assert (s1 != NULL);
    2.45 +	assert (s2 != NULL);
    2.46 +
    2.47  	n1 = strtol(s1, (char **) &p1, 10);
    2.48  	n2 = strtol(s2, (char **) &p2, 10);
    2.49  
    2.50 @@ -377,6 +389,9 @@
    2.51  	struct razor_package *p;
    2.52  	const char *name, *version, *arch;
    2.53  
    2.54 +	assert (set != NULL);
    2.55 +	assert (package != NULL);
    2.56 +
    2.57  	pi = razor_package_iterator_create(set);
    2.58  	while (razor_package_iterator_next(pi, &p, &name, &version, &arch)) {
    2.59  		if (strcmp(package, name) == 0)
    2.60 @@ -395,6 +410,9 @@
    2.61  {
    2.62  	const char *pool = set->details_string_pool.data;
    2.63  
    2.64 +	assert (set != NULL);
    2.65 +	assert (package != NULL);
    2.66 +
    2.67  	if (summary != NULL)
    2.68  		*summary = &pool[package->summary];
    2.69  	if (description != NULL)
    2.70 @@ -408,6 +426,8 @@
    2.71  RAZOR_EXPORT const char *
    2.72  razor_property_relation_to_string(struct razor_property *p)
    2.73  {
    2.74 +	assert (p != NULL);
    2.75 +
    2.76  	switch (p->flags & RAZOR_PROPERTY_RELATION_MASK) {
    2.77  	case RAZOR_PROPERTY_LESS:
    2.78  		return "<";
    2.79 @@ -432,6 +452,8 @@
    2.80  RAZOR_EXPORT const char *
    2.81  razor_property_type_to_string(struct razor_property *p)
    2.82  {
    2.83 +	assert (p != NULL);
    2.84 +
    2.85  	switch (p->flags & RAZOR_PROPERTY_TYPE_MASK) {
    2.86  	case RAZOR_PROPERTY_REQUIRES:
    2.87  		return "requires";
    2.88 @@ -454,6 +476,10 @@
    2.89  	const char *n, *pool = set->file_string_pool.data;
    2.90  	int len;
    2.91  
    2.92 +	assert (set != NULL);
    2.93 +	assert (dir != NULL);
    2.94 +	assert (pattern != NULL);
    2.95 +
    2.96  	e = (struct razor_entry *) set->files.data + dir->start;
    2.97  	do {
    2.98  		n = pool + e->name;
    2.99 @@ -498,6 +524,8 @@
   2.100  	struct razor_entry *e;
   2.101  	char buffer[512], *p, *base;
   2.102  
   2.103 +	assert (set != NULL);
   2.104 +
   2.105  	if (pattern == NULL || !strcmp (pattern, "/")) {
   2.106  		buffer[0] = '\0';
   2.107  		list_dir(set, set->files.data, buffer, NULL);
   2.108 @@ -585,6 +613,9 @@
   2.109  	uint32_t end;
   2.110  	char buffer[512];
   2.111  
   2.112 +	assert (set != NULL);
   2.113 +	assert (name != NULL);
   2.114 +
   2.115  	package = razor_set_get_package(set, name);
   2.116  	/* TODO: we should return the error to the caller */
   2.117  	if (!package)
   2.118 @@ -610,6 +641,9 @@
   2.119  	const char *name1, *name2, *version1, *version2, *arch1, *arch2;
   2.120  	int res;
   2.121  
   2.122 +	assert (set != NULL);
   2.123 +	assert (upstream != NULL);
   2.124 +
   2.125  	pi1 = razor_package_iterator_create(set);
   2.126  	pi2 = razor_package_iterator_create(upstream);
   2.127  
   2.128 @@ -663,6 +697,9 @@
   2.129  	struct razor_package_query *query;
   2.130  	struct razor_package_iterator *pi;
   2.131  
   2.132 +	assert (set != NULL);
   2.133 +	assert (next != NULL);
   2.134 +
   2.135  	query = razor_package_query_create(set);
   2.136  	razor_set_diff(next, set, add_new_package, query);
   2.137  
   2.138 @@ -683,6 +720,9 @@
   2.139  	struct razor_package_query *query;
   2.140  	struct razor_package_iterator *pi;
   2.141  
   2.142 +	assert (set != NULL);
   2.143 +	assert (next != NULL);
   2.144 +
   2.145  	query = razor_package_query_create(next);
   2.146  	razor_set_diff(set, next, add_new_package, query);
   2.147  
     3.1 --- a/librazor/root.c	Sun Jun 29 10:55:17 2008 +0100
     3.2 +++ b/librazor/root.c	Sun Jun 29 17:32:19 2008 +0100
     3.3 @@ -24,6 +24,8 @@
     3.4  #include <dirent.h>
     3.5  #include <unistd.h>
     3.6  #include <fcntl.h>
     3.7 +#include <assert.h>
     3.8 +
     3.9  #include "razor.h"
    3.10  #include "razor-internal.h"
    3.11  
    3.12 @@ -49,6 +51,8 @@
    3.13  	struct razor_set *set;
    3.14  	char path[PATH_MAX], details_path[PATH_MAX], files_path[PATH_MAX];
    3.15  
    3.16 +	assert (root != NULL);
    3.17 +
    3.18  	if (stat(root, &buf) < 0) {
    3.19  		if (mkdir(root, 0777) < 0) {
    3.20  			fprintf(stderr,
    3.21 @@ -100,6 +104,8 @@
    3.22  {
    3.23  	struct razor_root *image;
    3.24  
    3.25 +	assert (root != NULL);
    3.26 +
    3.27  	image = malloc(sizeof *image);
    3.28  	if (image == NULL)
    3.29  		return NULL;
    3.30 @@ -140,6 +146,8 @@
    3.31  {
    3.32  	char path[PATH_MAX];
    3.33  
    3.34 +	assert (root != NULL);
    3.35 +
    3.36  	snprintf(path, sizeof path, "%s%s/%s",
    3.37  		 root, razor_root_path, system_repo_filename);
    3.38  
    3.39 @@ -149,12 +157,16 @@
    3.40  RAZOR_EXPORT struct razor_set *
    3.41  razor_root_get_system_set(struct razor_root *root)
    3.42  {
    3.43 +	assert (root != NULL);
    3.44 +
    3.45  	return root->system;
    3.46  }
    3.47  
    3.48  RAZOR_EXPORT int
    3.49  razor_root_close(struct razor_root *root)
    3.50  {
    3.51 +	assert (root != NULL);
    3.52 +
    3.53  	razor_set_destroy(root->system);
    3.54  	unlink(root->new_path);
    3.55  	close(root->fd);
    3.56 @@ -166,6 +178,9 @@
    3.57  RAZOR_EXPORT void
    3.58  razor_root_update(struct razor_root *root, struct razor_set *next)
    3.59  {
    3.60 +	assert (root != NULL);
    3.61 +	assert (next != NULL);
    3.62 +
    3.63  	razor_set_write_to_fd(next, root->fd, RAZOR_REPO_FILE_MAIN);
    3.64  	root->next = next;
    3.65  
    3.66 @@ -178,6 +193,8 @@
    3.67  RAZOR_EXPORT int
    3.68  razor_root_commit(struct razor_root *root)
    3.69  {
    3.70 +	assert (root != NULL);
    3.71 +
    3.72  	/* Make it so. */
    3.73  	rename(root->new_path, root->path);
    3.74  	printf("renamed %s to %s\n", root->new_path, root->path);
     4.1 --- a/librazor/rpm.c	Sun Jun 29 10:55:17 2008 +0100
     4.2 +++ b/librazor/rpm.c	Sun Jun 29 17:32:19 2008 +0100
     4.3 @@ -31,6 +31,7 @@
     4.4  #include <unistd.h>
     4.5  #include <arpa/inet.h>
     4.6  #include <zlib.h>
     4.7 +#include <assert.h>
     4.8  
     4.9  #include "razor.h"
    4.10  #include "razor-internal.h"
    4.11 @@ -357,6 +358,8 @@
    4.12  	const char *name;
    4.13  	int fd;
    4.14  
    4.15 +	assert (filename != NULL);
    4.16 +
    4.17  	rpm = malloc(sizeof *rpm);
    4.18  	if (rpm == NULL)
    4.19  		return NULL;
    4.20 @@ -713,6 +716,9 @@
    4.21  	char *path;
    4.22  	size_t filesize;
    4.23  
    4.24 +	assert (rpm != NULL);
    4.25 +	assert (root != NULL);
    4.26 +
    4.27  	installer.rpm = rpm;
    4.28  	installer.root = root;
    4.29  
    4.30 @@ -771,6 +777,8 @@
    4.31  {
    4.32  	int err;
    4.33  
    4.34 +	assert (rpm != NULL);
    4.35 +
    4.36  	free(rpm->dirs);
    4.37  	err = munmap(rpm->map, rpm->size);
    4.38  	free(rpm);
    4.39 @@ -786,6 +794,9 @@
    4.40  	const uint32_t *epoch;
    4.41  	char evr[128], buf[16];
    4.42  
    4.43 +	assert (importer != NULL);
    4.44 +	assert (rpm != NULL);
    4.45 +
    4.46  	name = razor_rpm_get_indirect(rpm, RPMTAG_NAME, NULL);
    4.47  	epoch = razor_rpm_get_indirect(rpm, RPMTAG_EPOCH, NULL);
    4.48  	version = razor_rpm_get_indirect(rpm, RPMTAG_VERSION, NULL);
     5.1 --- a/librazor/transaction.c	Sun Jun 29 10:55:17 2008 +0100
     5.2 +++ b/librazor/transaction.c	Sun Jun 29 17:32:19 2008 +0100
     5.3 @@ -32,6 +32,7 @@
     5.4  #include <errno.h>
     5.5  #include <ctype.h>
     5.6  #include <fnmatch.h>
     5.7 +#include <assert.h>
     5.8  
     5.9  #include "razor-internal.h"
    5.10  #include "razor.h"
    5.11 @@ -188,6 +189,9 @@
    5.12  razor_transaction_install_package(struct razor_transaction *trans,
    5.13  				  struct razor_package *package)
    5.14  {
    5.15 +	assert (trans != NULL);
    5.16 +	assert (package != NULL);
    5.17 +
    5.18  	transaction_set_install_package(&trans->upstream, package);
    5.19  	trans->changes++;
    5.20  }
    5.21 @@ -196,6 +200,9 @@
    5.22  razor_transaction_remove_package(struct razor_transaction *trans,
    5.23  				 struct razor_package *package)
    5.24  {
    5.25 +	assert (trans != NULL);
    5.26 +	assert (package != NULL);
    5.27 +
    5.28  	transaction_set_remove_package(&trans->system, package);
    5.29  	trans->changes++;
    5.30  }
    5.31 @@ -206,6 +213,9 @@
    5.32  {
    5.33  	struct razor_package *spkgs, *upkgs, *end;
    5.34  
    5.35 +	assert (trans != NULL);
    5.36 +	assert (package != NULL);
    5.37 +
    5.38  	spkgs = trans->system.set->packages.data;
    5.39  	upkgs = trans->upstream.set->packages.data;
    5.40  	end = trans->system.set->packages.data +
    5.41 @@ -532,6 +542,8 @@
    5.42  	struct razor_package *p;
    5.43  	int i, count;
    5.44  
    5.45 +	assert (trans != NULL);
    5.46 +
    5.47  	count = trans->system.set->packages.size / sizeof *p;
    5.48  	for (i = 0; i < count; i++)
    5.49  		trans->system.packages[i] |= TRANS_PACKAGE_UPDATE;
    5.50 @@ -868,6 +880,8 @@
    5.51  RAZOR_EXPORT void
    5.52  razor_transaction_destroy(struct razor_transaction *trans)
    5.53  {
    5.54 +	assert (trans != NULL);
    5.55 +
    5.56  	transaction_set_release(&trans->system);
    5.57  	transaction_set_release(&trans->upstream);
    5.58  	free(trans);