s4: Make the int32 problem more clear - and fix another error
[ira/wip.git] / source4 / dsdb / schema / schema_syntax.c
index c26b407c1f2e3a98f886d4f4dd267e425f756ec7..6159ab48b1a1cbb6e27c8d64ebdbd9b899723327 100644 (file)
@@ -234,7 +234,9 @@ static WERROR dsdb_syntax_INT32_ldb_to_drsuapi(struct ldb_context *ldb,
                blobs[i] = data_blob_talloc(blobs, NULL, 4);
                W_ERROR_HAVE_NO_MEMORY(blobs[i].data);
 
-               v = strtol((const char *)in->values[i].data, NULL, 10);
+               /* We've to use "strtoll" here to have the intended overflows.
+                * Otherwise we may get "LONG_MAX" and the conversion is wrong. */
+               v = strtoll((const char *)in->values[i].data, NULL, 0);
 
                SIVALS(blobs[i].data, 0, v);
        }