for (i=0; i < in->num_values; i++) {
long v;
+ long n;
char buf[sizeof("-2147483648")];
char *end = NULL;
return WERR_DS_INVALID_ATTRIBUTE_SYNTAX;
}
+ n = v & UINT32_MAX;
+
if (n != v) {
DEBUG(0,("invalid[%s] n[%ld] v[%ld]\n",
buf, n, v));
}
if ((v & INT32_MIN) && buf[0] != '-') {
- /*
- * We need to accept values between '4294967295'
- * and '-2147483648', but store and return values
- * between '2147483647' and '-2147483648'.
+ /*
+ * if the 0x80000000 bit is set, it is a negative
+ * value. We need to make sure the it was given
+ * as a negativ string value.
+ *
+ * We need to accept '-2147483647', but reject
+ * '2147483649', both represent 0x80000001.
*/
DEBUG(0,("invalid[%s] n[%ld] v[%ld]\n",
buf, n, v));