diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-04-18 15:28:54 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-04-19 00:32:26 -0400 |
commit | 8cdddbb0f1a8c6eb023cbe732e5701240a54ff3c (patch) | |
tree | 12cc1ea0186b242a82d87bc2f62142e5decefedb /src | |
parent | f70b803e39484a2eba362414545ba8afd027c9da (diff) | |
download | spmc-8cdddbb0f1a8c6eb023cbe732e5701240a54ff3c.tar.gz |
Implement error handling
* Die on bad root directory
Diffstat (limited to 'src')
-rw-r--r-- | src/spm.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -128,6 +128,13 @@ int main(int argc, char *argv[], char *arge[]) { usage(program_name); exit(1); } + + // Installing into the system's root is forbidden for obvious reasons + if (strcmp(arg_next, DIRSEPS) == 0) { + fprintf(stderr, "FATAL: refusing to operate on the system root directory\n"); + exit(1); + } + strcpy(rootdir, arg_next); i++; } @@ -236,7 +243,10 @@ int main(int argc, char *argv[], char *arge[]) { if (RUNTIME_INSTALL) { int status_install = 0; if ((status_install = spm_do_install(rootfs, mf, packages)) == -1) { - // failed to create temporary destination root + // general failure + if (spmerrno) { + spm_perror("Failed with reason"); + } exit(1); } else if (status_install == -2) { // user said no when asked to proceed |