siginfo_init(struct bsdtar *bsdtar)
{
/* Set the strings to NULL so that free() is safe. */
- bsdtar->siginfo->path = bsdtar->siginfo->oper = NULL;
+ bsdtar->siginfo = NULL;
}
#endif
{
/* Free old operation and path strings. */
+ if (bsdtar->siginfo == NULL)
+ return;
free(bsdtar->siginfo->oper);
free(bsdtar->siginfo->path);
sigaction(SIGUSR1, &bsdtar->siginfo->sigusr1_old, NULL);
#endif
- /* Free strings. */
- free(bsdtar->siginfo->path);
- free(bsdtar->siginfo->oper);
+ if (bsdtar->siginfo) {
+ /* Free strings. */
+ free(bsdtar->siginfo->path);
+ free(bsdtar->siginfo->oper);
- /* Free internal data structure. */
- free(bsdtar->siginfo);
+ /* Free internal data structure. */
+ free(bsdtar->siginfo);
+ }
}