Re: [PATCH] SIGSEGV in build_searchdirs()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Michael Holzheu wrote:

> Hi Dave!
>
> This patch fixes the following (minor) problem:
>
> If the directory "/usr/src" does not exist and crash is called without
> parameters, it dies with SIGSEGV.
>
> The reason is that the searchdirs buffer is not allocated, if "/usr/src" is
> not present. This fix allocates the buffer in any case.

Weird again.  In all these years, nobody's ever apparently run
crash on a system without /usr/src?

Queued for next upstream and RHEL5-beta2 releases.

Thanks again,
  Dave


>
>
> ---
>
>  filesys.c |   14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff -Naur crash-4.0-3.3/filesys.c crash-4.0-3.3-searchdirs-fix/filesys.c
> --- crash-4.0-3.3/filesys.c     2006-09-07 21:00:08.000000000 +0200
> +++ crash-4.0-3.3-searchdirs-fix/filesys.c      2006-09-14 14:02:35.000000000 +0200
> @@ -315,14 +315,12 @@
>                  for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp))
>                         cnt++;
>
> -               if ((searchdirs = (char **)malloc(cnt * sizeof(char *)))
> -                   == NULL) {
> +               if ((searchdirs = calloc(cnt, sizeof(char *))) == NULL) {
>                         error(INFO, "/usr/src/ directory list malloc: %s\n",
>                                  strerror(errno));
>                         closedir(dirp);
>                         return default_searchdirs;
>                 }
> -               BZERO(searchdirs, cnt * sizeof(char *));
>
>                 for (i = 0; i < DEFAULT_SEARCHDIRS; i++)
>                         searchdirs[i] = default_searchdirs[i];
> @@ -357,6 +355,16 @@
>                 closedir(dirp);
>
>                 searchdirs[cnt] = NULL;
> +       } else {
> +               if ((searchdirs = calloc(cnt, sizeof(char *))) == NULL) {
> +                       error(INFO, "search directory list malloc: %s\n",
> +                                strerror(errno));
> +                       closedir(dirp);
> +                       return default_searchdirs;
> +               }
> +               for (i = 0; i < DEFAULT_SEARCHDIRS; i++)
> +                       searchdirs[i] = default_searchdirs[i];
> +               cnt = DEFAULT_SEARCHDIRS;
>         }
>
>          if (redhat_kernel_directory_v1(dirbuf)) {

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/crash-utility

[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux