diff --git a/src/tools/mac/symupload/symupload.m b/src/tools/mac/symupload/symupload.m index 179f8d50..a7cce7b0 100644 --- a/src/tools/mac/symupload/symupload.m +++ b/src/tools/mac/symupload/symupload.m @@ -38,6 +38,8 @@ // cpu: the CPU that the module was built for (x86 or ppc) // symbol_file: the contents of the breakpad-format symbol file +#include +#include #include #include @@ -165,6 +167,25 @@ SetupOptions(int argc, const char *argv[], Options *options) { exit(1); } + int fd = open(argv[optind], O_RDONLY); + if (fd < 0) { + fprintf(stderr, "%s: %s: %s\n", argv[0], argv[optind], strerror(errno)); + exit(1); + } + + struct stat statbuf; + if (fstat(fd, &statbuf) < 0) { + fprintf(stderr, "%s: %s: %s\n", argv[0], argv[optind], strerror(errno)); + close(fd); + exit(1); + } + close(fd); + + if (!S_ISREG(statbuf.st_mode)) { + fprintf(stderr, "%s: %s: not a regular file\n", argv[0], argv[optind]); + exit(1); + } + options->symbolsPath = [NSString stringWithUTF8String:argv[optind]]; options->uploadURLStr = [NSString stringWithUTF8String:argv[optind + 1]]; }