On Friday, 17 August 2007 at 18:53, Dominik 'Rathann' Mierzejewski wrote:
> Hello.
> 
> Due to the recent glibc changes, applications which use open() in an unsafe
> way (i.e. in O_CREAT mode without setting file permissions) are abort()'ed.
> For more details, see
> https://www.redhat.com/archives/fedora-maintainers/2007-August/msg00293.html
> 
> It turns out that OpenDX has one such call in src/exec/libdx/fileio.c.
> 
> Please apply the attached patch to fix that.

Updated patch attached, found one more issue.

Regards,
R.

-- 
Fedora contributor http://fedoraproject.org/wiki/DominikMierzejewski
Livna contributor http://rpm.livna.org MPlayer developer http://mplayerhq.hu
"Faith manages."
        -- Delenn to Lennier in Babylon 5:"Confessions and Lamentations"
--- dx-4.4.4/src/exec/libdx/fileio.c.open       2006-01-05 23:55:47.000000000 
+0100
+++ dx-4.4.4/src/exec/libdx/fileio.c    2007-08-17 18:43:14.000000000 +0200
@@ -263,7 +263,7 @@ Error _dxffile_open(char *name, int rw)
        case 2:/* read/write */
                fd = open(name, O_RDWR);
                if (fd < 0) {
-                       fd = open(name, O_WRONLY | O_CREAT);
+                       fd = open(name, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
                        if (fd < 0) {
                                DXSetError(ERROR_DATA_INVALID, 
                                "can't open/create file '%s'", name);
--- dx-4.4.4/src/exec/libdx/plock.c.open        2002-07-17 06:48:18.000000000 
+0200
+++ dx-4.4.4/src/exec/libdx/plock.c     2007-08-17 19:05:14.000000000 +0200
@@ -37,7 +37,8 @@ struct seminfo *__buf;      /* buffer fo
 
 #define SEM_FLAGS       (IPC_CREAT | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | 
S_IROTH | S_IWOTH)
 #define SHM_FLAGS       (IPC_CREAT | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | 
S_IROTH | S_IWOTH)
-#define OPEN_FLAGS      (O_CREAT | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | 
S_IROTH | S_IWOTH)
+#define OPEN_FLAGS      (O_CREAT)
+#define OPEN_MODE       (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | 
S_IWOTH)
 #define IS_MINE(a)      (locks->_owner[a] == getpid())
 #define SET_OWNER(a)    (locks->_owner[a] = getpid())
 #define CLEAR_OWNER(a)  (locks->_owner[a] = 0)
@@ -268,7 +269,7 @@ PLockInit()
 
     if (stat(LOCKFILE, &statbuf))
     {
-        int fd = open(LOCKFILE, OPEN_FLAGS);
+        int fd = open(LOCKFILE, OPEN_FLAGS, OPEN_MODE);
        if (fd < 0)
        {
            fprintf(stderr, "initLocks: error accessing locks shared block: 
open\n");
_______________________________________________
OpenDX2-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opendx2-dev

Reply via email to