Avoid dereferencing argv[argc].

See 
http://www.forallsecure.com/bug-reports/011f1a55f79a5501b36008d6ee0d40e8b6644569/

Reported-by: Alexandre Rebert <alexan...@cmu.edu>
Signed-off-by: Julien Cristau <jcris...@debian.org>
---
 main.c |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/main.c b/main.c
index e42b0cf..6ccb09b 100644
--- a/main.c
+++ b/main.c
@@ -242,6 +242,8 @@ main(int argc, char *argv[])
                        break;
                case 'D':
                        if (argv[0][2] == '\0') {
+                                if (argc < 2)
+                                       fatalerr("Missing argument for -D\n");
                                argv++;
                                argc--;
                        }
@@ -257,6 +259,8 @@ main(int argc, char *argv[])
                            fatalerr("Too many -I flags.\n");
                        *incp++ = argv[0]+2;
                        if (**(incp-1) == '\0') {
+                                if (argc < 2)
+                                       fatalerr("Missing argument for -I\n");
                                *(incp-1) = *(++argv);
                                argc--;
                        }
@@ -270,6 +274,8 @@ main(int argc, char *argv[])
                            undeflist = realloc(undeflist,
                                                numundefs * sizeof(char *));
                        if (argv[0][2] == '\0') {
+                                if (argc < 2)
+                                       fatalerr("Missing argument for -U\n");
                                argv++;
                                argc--;
                        }
@@ -286,6 +292,8 @@ main(int argc, char *argv[])
                case 'w':
                        if (endmarker) break;
                        if (argv[0][2] == '\0') {
+                                if (argc < 2)
+                                       fatalerr("Missing argument for -w\n");
                                argv++;
                                argc--;
                                width = atoi(argv[0]);
@@ -295,6 +303,8 @@ main(int argc, char *argv[])
                case 'o':
                        if (endmarker) break;
                        if (argv[0][2] == '\0') {
+                                if (argc < 2)
+                                       fatalerr("Missing argument for -o\n");
                                argv++;
                                argc--;
                                objsuffix = argv[0];
@@ -304,6 +314,8 @@ main(int argc, char *argv[])
                case 'p':
                        if (endmarker) break;
                        if (argv[0][2] == '\0') {
+                                if (argc < 2)
+                                       fatalerr("Missing argument for -p\n");
                                argv++;
                                argc--;
                                objprefix = argv[0];
@@ -322,6 +334,8 @@ main(int argc, char *argv[])
                        if (endmarker) break;
                        startat = argv[0]+2;
                        if (*startat == '\0') {
+                                if (argc < 2)
+                                       fatalerr("Missing argument for -s\n");
                                startat = *(++argv);
                                argc--;
                        }
@@ -333,6 +347,8 @@ main(int argc, char *argv[])
                        if (endmarker) break;
                        makefile = argv[0]+2;
                        if (*makefile == '\0') {
+                                if (argc < 2)
+                                       fatalerr("Missing argument for -f\n");
                                makefile = *(++argv);
                                argc--;
                        }
-- 
1.7.10.4


-- 
To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/1372698281-30544-1-git-send-email-jcris...@debian.org

Reply via email to