macloader: Use fchmod() to change permissions.
authorAndreas Schneider <asn@cryptomilk.org>
Mon, 26 Jan 2015 22:19:03 +0000 (23:19 +0100)
committerAndreas Schneider <asn@cryptomilk.org>
Tue, 27 Jan 2015 08:01:47 +0000 (09:01 +0100)
Change-Id: I18bca9b022dba24403867b022af9d858aad72bc4
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
macloader/macloader.c

index e1825882c8f5e02dfdcf427008f8b23f411bed30..03ecc3dc9ba3deba6751f2fa7161fede338dfa56 100644 (file)
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/stat.h>
+#include <unistd.h>
 
 #include <cutils/log.h>
 
@@ -147,12 +148,19 @@ int main() {
             ALOGE("Can't write to %s\n", CID_PATH);
             return -1;
         }
-        fclose(cidfile);
 
-        /* set permissions on cid file */
-        ALOGD("Setting permissions on %s\n", CID_PATH);
+        /* Change permissions of cid file */
+        ALOGD("Change permissions of %s\n", CID_PATH);
+
+        fd = fileno(cidfile);
         amode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
-        ret = chmod(CID_PATH, amode);
+        ret = fchmod(fd, amode);
+        fclose(cidfile);
+        if (ret != 0) {
+            ALOGE("Can't set permissions on %s - %s\n",
+                  CID_PATH, strerror(errno));
+            return 1;
+        }
 
         char* chown_cmd = (char*) malloc(strlen("chown system ") + strlen(CID_PATH) + 1);
         char* chgrp_cmd = (char*) malloc(strlen("chgrp system ") + strlen(CID_PATH) + 1);
@@ -161,12 +169,6 @@ int main() {
         system(chown_cmd);
         system(chgrp_cmd);
 
-        if (ret != 0) {
-            fprintf(stderr, "chmod() on file %s failed\n", CID_PATH);
-            ALOGE("Can't set permissions on %s\n", CID_PATH);
-            return ret;
-        }
-
     } else {
         /* delete cid file if no specific type */
         ALOGD("Deleting file %s\n", CID_PATH);