]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#7878 Replace uint32_t with unsigned in back-mdb
authorRyan Tandy <ryan@nardis.ca>
Fri, 3 Apr 2020 22:15:27 +0000 (15:15 -0700)
committerQuanah Gibson-Mount <quanah@openldap.org>
Thu, 16 Apr 2020 16:52:18 +0000 (16:52 +0000)
init.c: align mi_dbenv_flags and flags with mdb_dbi_open, which declares
flags as unsigned int.

search.c: align mi_rtxn_size with ARG_UINT; adjust ww_ctx.nentries to
silence a warning about signed/unsigned comparison.

config.c: parse checkpoint config more carefully. Reject negative or
unreasonably large values for kbytes and minutes. Ensure both values are
parsed successfully before making any changes.

Fixes a compilation failure under MinGW, where stdint.h types are not
implicitly pulled in by other headers.

servers/slapd/back-mdb/back-mdb.h
servers/slapd/back-mdb/config.c
servers/slapd/back-mdb/init.c
servers/slapd/back-mdb/search.c

index 527995ac740b113781c967776751af7033a38745..904e136fc36bc9fe9b69ec12adff047d195da328 100644 (file)
@@ -66,9 +66,8 @@ struct mdb_info {
        MDB_env         *mi_dbenv;
 
        /* DB_ENV parameters */
-       /* The DB_ENV can be tuned via DB_CONFIG */
        char            *mi_dbenv_home;
-       uint32_t        mi_dbenv_flags;
+       unsigned        mi_dbenv_flags;
        int                     mi_dbenv_mode;
 
        size_t          mi_mapsize;
@@ -81,10 +80,10 @@ struct mdb_info {
        int                     mi_search_stack_depth;
        int                     mi_readers;
 
-       uint32_t        mi_rtxn_size;
+       unsigned        mi_rtxn_size;
        int                     mi_txn_cp;
-       uint32_t        mi_txn_cp_min;
-       uint32_t        mi_txn_cp_kbyte;
+       unsigned        mi_txn_cp_min;
+       unsigned        mi_txn_cp_kbyte;
        struct re_s             *mi_txn_cp_task;
        struct re_s             *mi_index_task;
 
index f1b86c07a093dd132fe0aef76a7c4382216cca84..d59c798d82f357a7f9fcce1fa47f6a8521c9c653 100644 (file)
@@ -521,22 +521,22 @@ mdb_cf_gen( ConfigArgs *c )
                }
                break;
        case MDB_CHKPT: {
-               long    l;
-               mdb->mi_txn_cp = 1;
-               if ( lutil_atolx( &l, c->argv[1], 0 ) != 0 ) {
+               unsigned cp_kbyte, cp_min;
+               if ( lutil_atoux( &cp_kbyte, c->argv[1], 0 ) != 0 ) {
                        fprintf( stderr, "%s: "
                                "invalid kbyte \"%s\" in \"checkpoint\".\n",
                                c->log, c->argv[1] );
                        return 1;
                }
-               mdb->mi_txn_cp_kbyte = l;
-               if ( lutil_atolx( &l, c->argv[2], 0 ) != 0 ) {
+               if ( lutil_atoux( &cp_min, c->argv[2], 0 ) != 0 ) {
                        fprintf( stderr, "%s: "
                                "invalid minutes \"%s\" in \"checkpoint\".\n",
                                c->log, c->argv[2] );
                        return 1;
                }
-               mdb->mi_txn_cp_min = l;
+               mdb->mi_txn_cp = 1;
+               mdb->mi_txn_cp_kbyte = cp_kbyte;
+               mdb->mi_txn_cp_min = cp_min;
                /* If we're in server mode and time-based checkpointing is enabled,
                 * submit a task to perform periodic checkpoints.
                 */
index abbb3334c4773a390f35306a2fc8e9e12c8c5368..fbde9a3b19eba97180ecbd3df09cb9e466d40093 100644 (file)
@@ -85,7 +85,7 @@ mdb_db_open( BackendDB *be, ConfigReply *cr )
        int rc, i;
        struct mdb_info *mdb = (struct mdb_info *) be->be_private;
        struct stat stat1;
-       uint32_t flags;
+       unsigned flags;
        char *dbhome;
        MDB_txn *txn;
 
index 5024c86563d362ee4c8a3585ee1e7d43fdc39687..6677532383927ea8d8169c5fbecc5b2568c2910c 100644 (file)
@@ -331,7 +331,7 @@ typedef struct ww_ctx {
        ID key;
        MDB_val data;
        int flag;
-       int nentries;
+       unsigned nentries;
 } ww_ctx;
 
 /* ITS#7904 if we get blocked while writing results to client,