Module Name:    othersrc
Committed By:   agc
Date:           Mon Nov 26 05:49:06 UTC 2012

Modified Files:
        othersrc/external/bsd/mat/dist: frontends.c mat.c

Log Message:
act on feedback from fuzz tests:

check arguments to exported functions on entry to those functions


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 othersrc/external/bsd/mat/dist/frontends.c
cvs rdiff -u -r1.6 -r1.7 othersrc/external/bsd/mat/dist/mat.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: othersrc/external/bsd/mat/dist/frontends.c
diff -u othersrc/external/bsd/mat/dist/frontends.c:1.5 othersrc/external/bsd/mat/dist/frontends.c:1.6
--- othersrc/external/bsd/mat/dist/frontends.c:1.5	Wed Aug  3 01:09:58 2011
+++ othersrc/external/bsd/mat/dist/frontends.c	Mon Nov 26 05:49:05 2012
@@ -163,6 +163,10 @@ mat_tar(int argc, char **argv)
 	int		 ok;
 	int		 i;
 
+	if (argc < 0 || argv == NULL || argv[0] == NULL || argv[1] == NULL) {
+		fprintf(stderr, "mat_tar: bad args\n");
+		return 0;
+	}
 	(void) memset(&mat, 0x0, sizeof(mat));
 	action = NULL;
 	f = NULL;
@@ -299,6 +303,10 @@ mat_vtar(char *arg, ...)
 	char	*s;
 	int	 argc;
 
+	if (arg == NULL) {
+		fprintf(stderr, "mat_vtar: bad args\n");
+		return 0;
+	}
 	argv[0] = arg;
 	va_start(args, arg);
 	for (argc = 1 ; (s = va_arg(args, char *)) != NULL && argc < MAT_ARGC_MAX ; argc++) {
@@ -325,6 +333,10 @@ mat_pax(int argc, char **argv)
 	int		 ok;
 	int		 i;
 
+	if (argv == NULL) {
+		fprintf(stderr, "mat_pax: bad args\n");
+		return 0;
+	}
 	(void) memset(&mat, 0x0, sizeof(mat));
 	dir = NULL;
 	metalog = NULL;
@@ -439,6 +451,10 @@ mat_vpax(char *arg, ...)
 	char	*s;
 	int	 argc;
 
+	if (arg == NULL) {
+		fprintf(stderr, "mat_vpax: bad args\n");
+		return 0;
+	}
 	argv[0] = arg;
 	va_start(args, arg);
 	for (argc = 1 ; (s = va_arg(args, char *)) != NULL && argc < MAT_ARGC_MAX ; argc++) {

Index: othersrc/external/bsd/mat/dist/mat.c
diff -u othersrc/external/bsd/mat/dist/mat.c:1.6 othersrc/external/bsd/mat/dist/mat.c:1.7
--- othersrc/external/bsd/mat/dist/mat.c:1.6	Sun Nov 25 20:20:36 2012
+++ othersrc/external/bsd/mat/dist/mat.c	Mon Nov 26 05:49:05 2012
@@ -610,6 +610,10 @@ mat_add(mat_t *mat, const char *f)
 	int		 original;
 	int		 primary;
 
+	if (mat == NULL || f == NULL) {
+		(void) fprintf(stderr, "mat_add: bad args\n");
+		return 0;
+	}
 	(void) memset(&ent, 0x0, sizeof(ent));
 	if (*f == '/') {
 		(void) snprintf(dotpath, sizeof(dotpath), ".%s", f);
@@ -747,6 +751,10 @@ mat_list(mat_t *mat, const char *pat, FI
 	int		 list;
 	int		 cc;
 
+	if (mat == NULL || fp == NULL) {
+		(void) fprintf(stderr, "mat_list: bad args\n");
+		return 0;
+	}
 	if (!mat_verify(mat)) {
 		return 0;
 	}
@@ -931,6 +939,10 @@ mat_extract(mat_t *mat, const char *pat)
 	matent_t	 ent;
 	char		*name;
 
+	if (mat == NULL) {
+		(void) fprintf(stderr, "mat_extract: bad args\n");
+		return 0;
+	}
 	if (!mat_verify(mat)) {
 		return 0;
 	}
@@ -991,6 +1003,10 @@ mat_init(mat_t *mat, const char *f, cons
 	struct stat	st;
 	matheader_t	header;
 
+	if (mat == NULL || mode == NULL) {
+		(void) fprintf(stderr, "mat_init: bad args\n");
+		return 0;
+	}
 	mat->recursing = 1; /* default behavior */
 	if (strcmp(mat->action = mode, "create") == 0) {
 		if (f == NULL || strcmp(f, "-") == 0) {
@@ -1026,6 +1042,10 @@ mat_init(mat_t *mat, const char *f, cons
 int
 mat_end(mat_t *mat)
 {
+	if (mat == NULL) {
+		(void) fprintf(stderr, "mat_init: bad args\n");
+		return 0;
+	}
 	if (mat->mapped) {
 		munmap(mat->mapped, mat->size);
 	}
@@ -1054,6 +1074,10 @@ mat_audit(mat_t *mat, const char *pat, F
 	int		 cc;
 	int		 ok;
 
+	if (mat == NULL) {
+		(void) fprintf(stderr, "mat_init: bad args\n");
+		return 0;
+	}
 	if (!mat_verify(mat)) {
 		return 0;
 	}

Reply via email to