]> arthur.barton.de Git - netatalk.git/commitdiff
Several small fixes, from Riccardo Magliocchetti
authorFrank Lahm <franklahm@googlemail.com>
Wed, 30 Nov 2011 13:27:44 +0000 (14:27 +0100)
committerFrank Lahm <franklahm@googlemail.com>
Wed, 30 Nov 2011 13:27:44 +0000 (14:27 +0100)
etc/afpd/afp_asp.c
etc/afpd/appl.c
etc/afpd/dircache.c
etc/afpd/unix.c
etc/atalkd/config.c
etc/cnid_dbd/dbif.c
etc/uams/uams_passwd.c

index ea916d8b43c0e022fcb4b47aaa2d09576c346238..3e208f74a102d1db449b49b317908f508e8a75ec 100644 (file)
@@ -88,7 +88,6 @@ static void afp_authprint_remove(AFPObj *obj)
            if ((len = read( capfd, addr_filename_buff, 256 )) > 0) {
                int file_pid;
                char *p_filepid;
-               close(capfd);
                addr_filename_buff[len] = 0;
                if ( (p_filepid = strrchr(addr_filename_buff, ':')) != NULL) {
                    *p_filepid = '\0';
@@ -116,6 +115,8 @@ static void afp_authprint_remove(AFPObj *obj)
            } else {
                LOG(log_info, logtype_afpd, "couldn't read data from %s", addr_filename );
            }
+        if (capfd != -1)
+            close(capfd);
        } else {
            LOG(log_info, logtype_afpd, "%s is not a regular file", addr_filename );
        }
index 51b64ef283b97d48e3ef826fd25d20a6c3b7a7ed..d791d280843e842e61ea8f7ddbcd891a3a1101c5 100644 (file)
@@ -250,6 +250,7 @@ int afp_addappl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, siz
     mpath = obj->newtmp;
     mp = makemacpath( vol, mpath, AFPOBJ_TMPSIZ, curdir, path->m_name );
     if (!mp) {
+        close(tfd);
         return AFPERR_PARAM;
     }
     mplen =  mpath + AFPOBJ_TMPSIZ - mp;
@@ -263,6 +264,7 @@ int afp_addappl(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, siz
     memcpy(p, appltag, sizeof( appltag ));
     cc = mpath + AFPOBJ_TMPSIZ - p;
     if ( write( tfd, p, cc ) != cc ) {
+        close(tfd);
         unlink( tempfile );
         return( AFPERR_PARAM );
     }
index d3b8b6fc5fea30c64fefe9da4ec7d259fa9c15c4..05eaff01561a60d992dc98784ee545962f00e4d8 100644 (file)
@@ -693,5 +693,6 @@ void dircache_dump(void)
 
     fprintf(dump, "\n");
     fflush(dump);
+    fclose(dump);
     return;
 }
index 8d60a6ef61cca4a547e0ffe6bdfc1e9e6f534c7b..cc10d97ba02dbf39e58118eed7b6a4bba75503ec 100644 (file)
@@ -393,6 +393,7 @@ int setdirmode(const struct vol *vol, const char *name, mode_t mode)
            int setmode = (osx && *dirp->d_name == '.')?hf_mode:mode;
 
            if (setfilmode(dirp->d_name, setmode, &st, vol->v_umask) < 0) {
+               closedir( dir );
                 LOG(log_error, logtype_afpd, "setdirmode: chmod %s: %s",dirp->d_name, strerror(errno) );
                 return -1;
            }
index 957c18a27111deedfd0fd41d0c4b4c0f0b43b8b5..4005d6995631e8256608262dc457300a7623f5b5 100644 (file)
@@ -871,6 +871,8 @@ int plumb(void)
        }
 
        LOG(log_info, logtype_atalkd, "plumbed %s%d", device, ppa );
+
+    close(fd);
     }
 
     return( 0 );
index ac67e4dc27545104ead0bf6dff596103c78d8ad2..b96b2e6878c38f0f807a10387d12a69b487faa34 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <atalk/logger.h>
 #include <atalk/util.h>
+#include <atalk/errchk.h>
 
 #include "db_param.h"
 #include "dbif.h"
  */
 static int dbif_stamp(DBD *dbd, void *buffer, int size)
 {
+    EC_INIT;
     struct stat st;
-    int         rc,cwd;
+    int cwd = -1;
 
     if (size < 8)
-        return -1;
+        EC_FAIL;
 
     /* Remember cwd */
     if ((cwd = open(".", O_RDONLY)) < 0) {
         LOG(log_error, logtype_cnid, "error opening cwd: %s", strerror(errno));
-        return -1;
+        EC_FAIL;
     }
 
     /* chdir to db_envhome */
     if ((chdir(dbd->db_envhome)) != 0) {
         LOG(log_error, logtype_cnid, "error chdiring to db_env '%s': %s", dbd->db_envhome, strerror(errno));        
-        return -1;
+        EC_FAIL;
     }
 
-    if ((rc = stat(dbd->db_table[DBIF_CNID].name, &st)) < 0) {
+    if (stat(dbd->db_table[DBIF_CNID].name, &st) < 0) {
         LOG(log_error, logtype_cnid, "error stating database %s: %s", dbd->db_table[DBIF_CNID].name, db_strerror(errno));
-        return -1;
+        EC_FAIL;
     }
 
     LOG(log_maxdebug, logtype_cnid,"stamp: %s", asctime(localtime(&st.st_ctime)));
@@ -61,12 +63,15 @@ static int dbif_stamp(DBD *dbd, void *buffer, int size)
     memset(buffer, 0, size);
     memcpy(buffer, &st.st_ctime, sizeof(st.st_ctime));
 
-    if ((fchdir(cwd)) != 0) {
-        LOG(log_error, logtype_cnid, "error chdiring back: %s", strerror(errno));        
-        return -1;
+EC_CLEANUP:
+    if (cwd != -1) {
+        if (fchdir(cwd) != 0) {
+            LOG(log_error, logtype_cnid, "error chdiring back: %s", strerror(errno));        
+            EC_STATUS(-1);
+        }
+        close(cwd);
     }
-
-    return 0;
+    EC_EXIT;
 }
 
 /*!
index db9be446cf2723d3dbe0d62ad848948190464e4a..36d7a387b7ef03ca209cb9e786aeb512ec065585 100644 (file)
@@ -109,7 +109,7 @@ static int pwd_login(void *obj, char *username, int ulen, struct passwd **uam_pw
     }
     pwd->pw_passwd = sp->sp_pwdp;
 
-    if (sp && sp->sp_max != -1 && sp->sp_lstchg) {
+    if (sp->sp_max != -1 && sp->sp_lstchg) {
         time_t now = time(NULL) / (60*60*24);
         int32_t expire_days = sp->sp_lstchg - now + sp->sp_max;
         if ( expire_days < 0 ) {
@@ -338,7 +338,7 @@ static int passwd_printer(char      *start, char *stop, char *username, struct papfil
     }
     pwd->pw_passwd = sp->sp_pwdp;
 
-    if (sp && sp->sp_max != -1 && sp->sp_lstchg) {
+    if (sp->sp_max != -1 && sp->sp_lstchg) {
         time_t now = time(NULL) / (60*60*24);
         int32_t expire_days = sp->sp_lstchg - now + sp->sp_max;
         if ( expire_days < 0 ) {