[hplip] Avoid several bugs in createTempFile (bug #925032).

Tim Waugh twaugh at fedoraproject.org
Wed May 29 14:50:00 UTC 2013


commit d997917a78961cb75ed0239644420cc306bc0b93
Author: Tim Waugh <twaugh at redhat.com>
Date:   Wed May 29 15:29:35 2013 +0100

    Avoid several bugs in createTempFile (bug #925032).

 hplip-mkstemp.patch |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 hplip.spec          |    9 ++++++++-
 2 files changed, 54 insertions(+), 1 deletions(-)
---
diff --git a/hplip-mkstemp.patch b/hplip-mkstemp.patch
new file mode 100644
index 0000000..f367568
--- /dev/null
+++ b/hplip-mkstemp.patch
@@ -0,0 +1,46 @@
+diff -up hplip-3.13.5/common/utils.c.mkstemp hplip-3.13.5/common/utils.c
+--- hplip-3.13.5/common/utils.c.mkstemp	2013-05-29 15:21:17.210289396 +0100
++++ hplip-3.13.5/common/utils.c	2013-05-29 15:24:57.214498909 +0100
+@@ -222,8 +222,6 @@ void unload_library(void *pLibHandler)
+ int createTempFile(char* szFileName, FILE** pFilePtr)
+ {
+     char* pFilePos = NULL;
+-    char szFolderName[64]={0,};
+-    struct stat st;
+     int iFD;
+ 
+     if (szFileName == NULL || szFileName[0] == '\0' || pFilePtr == NULL)
+@@ -235,28 +233,11 @@ int createTempFile(char* szFileName, FIL
+     if (strstr(szFileName,"XXXXXX") == NULL)
+         strcat(szFileName,"_XXXXXX");
+ 
+-    pFilePos = strrchr(szFileName, '/');
+-    if (pFilePos)
+-    {
+-        strncpy(szFolderName, szFileName, (pFilePos - szFileName));
+-        if(stat(szFolderName,&st) == 0)
+-        {
+-            if(st.st_mode & S_IFDIR != 0)
+-            {
+-                iFD = mkstemp(szFileName);
+-                *pFilePtr = fdopen(iFD,"w+");
+-            }
+-            else
+-                BUG("Insufficient directory [%s] permissions\n",szFolderName);
+-        }
+-        else
+-                BUG("Failed to check directory [%s] errno[%d]\n",szFolderName, errno);
+-    }
++    iFD = mkstemp(szFileName);
++    if (iFD == -1)
++        BUG("Failed to create tmpfile [%s]: %s\n", szFileName, strerror (errno));
+     else
+-    {
+-        iFD = mkstemp(szFileName);
+         *pFilePtr = fdopen(iFD,"w+");
+-    }
+ 
+     return iFD;
+-}
+\ No newline at end of file
++}
diff --git a/hplip.spec b/hplip.spec
index 062210c..74d884c 100644
--- a/hplip.spec
+++ b/hplip.spec
@@ -7,7 +7,7 @@
 Summary: HP Linux Imaging and Printing Project
 Name: hplip
 Version: 3.13.5
-Release: 1%{?dist}
+Release: 2%{?dist}
 License: GPLv2+ and MIT
 Group: System Environment/Daemons
 
@@ -47,6 +47,7 @@ Patch30: hplip-hpaio-localonly.patch
 Patch31: hplip-ipp-accessors.patch
 Patch32: hplip-IEEE-1284-4.patch
 Patch33: hplip-check.patch
+Patch34: hplip-mkstemp.patch
 
 %global hpijs_epoch 1
 Requires: hpijs%{?_isa} = %{hpijs_epoch}:%{version}-%{release}
@@ -297,6 +298,9 @@ done
 # Various adjustments to make 'hp-check' run more smoothly (bug #683007).
 %patch33 -p1 -b .check
 
+# Avoid several bugs in createTempFile (bug #925032).
+%patch34 -p1 -b .mkstemp
+
 sed -i.duplex-constraints \
     -e 's,\(UIConstraints.* \*Duplex\),//\1,' \
     prnt/drv/hpcups.drv.in
@@ -527,6 +531,9 @@ rm -f %{buildroot}%{_sysconfdir}/xdg/autostart/hplip-systray.desktop
 %postun libs -p /sbin/ldconfig
 
 %changelog
+* Wed May 29 2013 Tim Waugh <twaugh at redhat.com> - 3.13.5-2
+- Avoid several bugs in createTempFile (bug #925032).
+
 * Tue May 14 2013 Jiri Popelka <jpopelka at redhat.com> - 3.13.5-1
 - 3.13.5
 - change udev rule to not add printer queue, just check plugin.


More information about the scm-commits mailing list