macloader: Use fchmod() to change permissions.
authorAndreas Schneider <asn@cryptomilk.org>
Mon, 26 Jan 2015 22:19:03 +0000 (23:19 +0100)
committerEthan Chen <intervigil@gmail.com>
Tue, 27 Jan 2015 22:41:41 +0000 (14:41 -0800)
Change-Id: I18bca9b022dba24403867b022af9d858aad72bc4
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
macloader/macloader.c

index 3e91ec5db7798d0269ea5cf780af3446e3ea3788..89b657da54fbed08f35f438dab1749034d4f5a67 100644 (file)
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/stat.h>
+#include <unistd.h>
 
 #include <cutils/log.h>
 
@@ -164,12 +165,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);
@@ -178,12 +186,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);