X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Ftdb.c;h=024b50258e7fc82b6e374e8ca402baa8be99df41;hb=3cdc433970587d269e5d56f62b86d659dc4ba916;hp=7fd58291ec363c0f6eddda56b4d478d9bb0b788e;hpb=0b3acd3a1122d542e2994d7791cc9127e91778f1;p=ppp.git diff --git a/pppd/tdb.c b/pppd/tdb.c index 7fd5829..024b502 100644 --- a/pppd/tdb.c +++ b/pppd/tdb.c @@ -210,6 +210,9 @@ static int tdb_oob(TDB_CONTEXT *tdb, tdb_off offset) tdb->map_ptr = (void *)mmap(NULL, tdb->map_size, tdb->read_only?PROT_READ:PROT_READ|PROT_WRITE, MAP_SHARED | MAP_FILE, tdb->fd, 0); + if (tdb->map_ptr == MAP_FAILED) { + tdb->map_ptr = NULL; + } #endif return 0; } @@ -373,6 +376,9 @@ static int tdb_expand(TDB_CONTEXT *tdb, tdb_off length) tdb->map_ptr = (void *)mmap(NULL, tdb->map_size, PROT_READ|PROT_WRITE, MAP_SHARED | MAP_FILE, tdb->fd, 0); + if (tdb->map_ptr == MAP_FAILED) { + tdb->map_ptr = NULL; + } } #endif @@ -1128,6 +1134,7 @@ TDB_CONTEXT *tdb_open(char *name, int hash_size, int tdb_flags, if (tdb.fd == -1) { goto fail; } + (void) fcntl(tdb.fd, F_SETFD, FD_CLOEXEC); } /* ensure there is only one process initialising at once */ @@ -1180,6 +1187,9 @@ TDB_CONTEXT *tdb_open(char *name, int hash_size, int tdb_flags, tdb.map_ptr = (void *)mmap(NULL, st.st_size, tdb.read_only? PROT_READ : PROT_READ|PROT_WRITE, MAP_SHARED | MAP_FILE, tdb.fd, 0); + if (tdb.map_ptr == MAP_FAILED) { + tdb.map_ptr = NULL; + } } #endif