rtld: Fix improper sync of map_object.c (17 July 2009)
authorJohn Marino <draco@marino.st>
Fri, 13 Jan 2012 20:13:59 +0000 (21:13 +0100)
committerJohn Marino <draco@marino.st>
Sat, 14 Jan 2012 10:59:44 +0000 (11:59 +0100)
DragonFly rtld synced FreeBSD commit SVN 195743, but this minor
condition change was missed.

libexec/rtld-elf/map_object.c

index b16afd5..0c7a480 100644 (file)
@@ -190,12 +190,11 @@ map_object(int fd, const char *path, const struct stat *sb)
 
            if ((nclear = data_vlimit - clear_vaddr) > 0) {
                /* Make sure the end of the segment is writable */
-               if ((data_prot & PROT_WRITE) == 0) {
-                   if (mprotect(clear_page, PAGE_SIZE, data_prot|PROT_WRITE) < 0) {
+               if ((data_prot & PROT_WRITE) == 0 && -1 ==
+                    mprotect(clear_page, PAGE_SIZE, data_prot|PROT_WRITE)) {
                        _rtld_error("%s: mprotect failed: %s", path,
                            strerror(errno));
                        return NULL;
-                   }
                }
 
                memset(clear_addr, 0, nclear);