diff --git a/kbd-1.12-dir.patch b/kbd-1.12-dir.patch new file mode 100644 index 0000000..0befee4 --- /dev/null +++ b/kbd-1.12-dir.patch @@ -0,0 +1,56 @@ +--- kbd-1.12/src/findfile.c.dir 2004-01-16 20:45:31.000000000 +0100 ++++ kbd-1.12/src/findfile.c 2005-05-20 15:36:45.000000000 +0200 +@@ -92,6 +92,7 @@ + if (d == NULL) + return NULL; + while ((de = readdir(d)) != NULL) { ++ struct stat statbuf; + int okdir; + + if (strcmp(de->d_name, ".") == 0 || +@@ -104,7 +105,6 @@ + okdir = (ff && strcmp(de->d_name, fdir) == 0); + + if ((secondpass && recdepth) || okdir) { +- struct stat statbuf; + char *a; + + a = xmalloc(strlen(dir) + strlen(de->d_name) + 2); +@@ -136,6 +136,8 @@ + continue; + + sprintf(pathname, "%s/%s", dir, de->d_name); ++ if (stat(pathname, &statbuf) != 0 || !S_ISREG(statbuf.st_mode)) ++ continue; + + /* Does tail consist of a known suffix and possibly + a compression suffix? */ +@@ -180,13 +182,16 @@ + /* Test for full pathname - opening it failed, so need suffix */ + /* (This is just nonsense, for backwards compatibility.) */ + if (*fnam == '/') { ++ struct stat statbuf; ++ + for (sp = suffixes; *sp; sp++) { + if (strlen(fnam) + strlen(*sp) + 1 > sizeof(pathname)) + continue; + if (*sp == 0) + continue; /* we tried it already */ + sprintf(pathname, "%s%s", fnam, *sp); +- if((fp = fopen(pathname, "r")) != NULL) ++ if(stat(pathname, &statbuf) == 0 && S_ISREG(statbuf.st_mode) ++ && (fp = fopen(pathname, "r")) != NULL) + return fp; + } + +@@ -196,7 +201,9 @@ + + strlen(dc->ext) + 1 > sizeof(pathname)) + continue; + sprintf(pathname, "%s%s%s", fnam, *sp, dc->ext); +- if ((fp = fopen(pathname, "r")) != NULL) { ++ if (stat(pathname, &statbuf) == 0 ++ && S_ISREG(statbuf.st_mode) ++ && (fp = fopen(pathname, "r")) != NULL) { + fclose(fp); + return pipe_open(dc); + } diff --git a/kbd.spec b/kbd.spec index 2430909..b0e2f39 100644 --- a/kbd.spec +++ b/kbd.spec @@ -1,7 +1,7 @@ Summary: Tools for configuring the console (keyboard, virtual terminals, etc.) Name: kbd Version: 1.12 -Release: 9 +Release: 10 License: GPL Group: System Environment/Base Source0: ftp://ftp.kernel.org/pub/linux/utils/kbd/kbd-%{version}.tar.bz2 @@ -20,6 +20,7 @@ Patch4: kbd-1.12-setfont-man.patch Patch5: kbd-1.12-Meta_utf8.patch Patch6: kbd-1.12-nostrip.patch Patch7: kbd-1.12-alias.patch +Patch8: kbd-1.12-dir.patch Obsoletes: console-tools Provides: console-tools Conflicts: util-linux < 2.11r-9 @@ -42,6 +43,7 @@ fonts, the virtual terminals and font files. %patch5 -p1 -b .Meta_utf8 %patch6 -p1 -b .nostrip %patch7 -p1 -b .alias +%patch8 -p1 -b .dir # 7-bit maps are obsolete; so are non-euro maps pushd data/keymaps/i386 @@ -120,6 +122,10 @@ install -c -m644 $RPM_SOURCE_DIR/kbdrate.pam \ %config %{_sysconfdir}/pam.d/* %changelog +* Fri May 20 2005 Miloslav Trmac - 1.12-10 +- Don't attempt to open directories as source files (#141634, original patch by + Paul Nasrat) + * Tue May 17 2005 Miloslav Trmac - 1.12-9 - Fix another violation of C aliasing rules (#157720, patch by Jan Kratochvil)