}
}
- assert(byte <= (INT_MAX >> 3));
- return Py_BuildValue("i", byte*8 + bit);
+ unsigned long long result;
+ if (!INT_MULTIPLY_OK(byte, 8, &result)
+ || !INT_ADD_OK(result, bit, &result))
+ {
+ PyErr_Format(PyExc_OverflowError, "bitmatch bit count too large");
+ return NULL;
+ }
+ return PyLong_FromUnsignedLongLong(result);
}
if (gethostname(buf, sizeof(buf) - 1))
return PyErr_SetFromErrno(PyExc_IOError);
+ buf[sizeof(buf) - 1] = 0;
return PyBytes_FromString(buf);
}