Treat unsigned 64 bit IDL values as unsigned long long in Python
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Tue, 16 Jun 2015 23:37:03 +0000 (11:37 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 24 Jun 2015 04:04:10 +0000 (06:04 +0200)
This caused a compilation error on i386:

default/librpc/gen_ndr/py_server_id.c:216:75: error: overflow in implicit constant conversion [-Werror=overflow]
  PyModule_AddObject(m, "SERVERID_UNIQUE_ID_NOT_TO_VERIFY", PyInt_FromLong(0xFFFFFFFFFFFFFFFFULL));

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
pidl/lib/Parse/Pidl/Samba4/Python.pm

index b0a7099f1cf684fb93782b17567eb9d78a483b57..7521d61408803e51b32664c79803806e4cf93741 100644 (file)
@@ -1199,10 +1199,14 @@ sub ConvertScalarToPython($$$)
 
        $ctypename = expandAlias($ctypename);
 
-       if ($ctypename =~ /^(u?int64|hyper|dlong|udlong|udlongr|NTTIME_hyper|NTTIME|NTTIME_1sec)$/) {
+       if ($ctypename =~ /^(int64|dlong)$/) {
                return "PyLong_FromLongLong($cvar)";
        }
 
+       if ($ctypename =~ /^(uint64|hyper|udlong|udlongr|NTTIME_hyper|NTTIME|NTTIME_1sec)$/) {
+               return "PyLong_FromUnsignedLongLong($cvar)";
+       }
+
        if ($ctypename =~ /^(char|u?int[0-9]*|time_t|uid_t|gid_t)$/) {
                return "PyInt_FromLong($cvar)";
        }