OSDN Git Service

pathconf: dead loop in bionic function __2_symlinks
authorBruce Beare <bruce.j.beare@intel.com>
Fri, 21 Oct 2011 02:16:11 +0000 (10:16 +0800)
committerBruce Beare <bruce.j.beare@intel.com>
Wed, 7 Dec 2011 17:47:20 +0000 (09:47 -0800)
Fix dead loops in file ./bionic/libc/unistd/pathconf.c

Change-Id: I7a1e6bcd9879c96bacfd376b88a1f899793295c8
Author: Jin Wei <wei.a.jin@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
libc/unistd/pathconf.c

index 032f918..26b580f 100644 (file)
@@ -70,13 +70,12 @@ __filesizebits( struct statfs*  s )
     };
     int  nn = 0;
 
-    for (;;) {
-        if ( known64[nn] == EOL_MAGIC )
-            return 32;
-
-        if ( known64[nn] == s->f_type )
+    for (; known64[nn] != EOL_MAGIC; ++nn) {
+        if (known64[nn] == s->f_type) {
             return 64;
+        }
     }
+    return 32;
 }
 
 
@@ -99,12 +98,10 @@ __link_max( struct statfs*  s )
     };
     int   nn = 0;
 
-    for (;;) {
-        if ( knownMax[nn].type == EOL_MAGIC )
-            return LINK_MAX;
-
-        if ( knownMax[nn].type == s->f_type )
+    for (; knownMax[nn].type != EOL_MAGIC; ++nn) {
+        if (knownMax[nn].type == s->f_type) {
             return knownMax[nn].max;
+        }
     }
     return LINK_MAX;
 }
@@ -121,12 +118,12 @@ __2_symlinks( struct statfs*  s )
     };
     int  nn = 0;
 
-    for (;;) {
-        if (knownNoSymlinks[nn] == 0)
-            return 1;
-        if (knownNoSymlinks[nn] == s->f_type)
+    for (; knownNoSymlinks[nn] != EOL_MAGIC; ++nn) {
+        if (knownNoSymlinks[nn] == s->f_type) {
             return 0;
+        }
     }
+    return 1;
 }
 
 static long