| /* Coverity Scan model | 
 |  * | 
 |  * This is a modeling file for Coverity Scan. Modeling helps to avoid false | 
 |  * positives. | 
 |  * | 
 |  * - A model file can't import any header files. | 
 |  * - Therefore only some built-in primitives like int, char and void are | 
 |  *   available but not wchar_t, NULL etc. | 
 |  * - Modeling doesn't need full structs and typedefs. Rudimentary structs | 
 |  *   and similar types are sufficient. | 
 |  * - An uninitialized local pointer is not an error. It signifies that the | 
 |  *   variable could be either NULL or have some data. | 
 |  * | 
 |  * Coverity Scan doesn't pick up modifications automatically. The model file | 
 |  * must be uploaded by an admin in the analysis settings of | 
 |  * http://scan.coverity.com/projects/200 | 
 |  */ | 
 |  | 
 | /* dummy definitions, in most cases struct fields aren't required. */ | 
 |  | 
 | #define NULL (void *)0 | 
 | #define assert(op) /* empty */ | 
 | typedef int sdigit; | 
 | typedef long Py_ssize_t; | 
 | typedef long long PY_LONG_LONG; | 
 | typedef unsigned short wchar_t; | 
 | typedef struct {} PyObject; | 
 | typedef struct {} grammar; | 
 | typedef struct {} DIR; | 
 | typedef struct {} RFILE; | 
 |  | 
 | /* Python/pythonrun.c | 
 |  * resourece leak false positive */ | 
 |  | 
 | void Py_FatalError(const char *msg) { | 
 |     __coverity_panic__(); | 
 | } | 
 |  | 
 | /* Objects/longobject.c | 
 |  * NEGATIVE_RETURNS false positive */ | 
 |  | 
 | static PyObject *get_small_int(sdigit ival) | 
 | { | 
 |     /* Never returns NULL */ | 
 |     PyObject *p; | 
 |     assert(p != NULL); | 
 |     return p; | 
 | } | 
 |  | 
 | PyObject *PyLong_FromLong(long ival) | 
 | { | 
 |     PyObject *p; | 
 |     int maybe; | 
 |  | 
 |     if ((ival >= -5) && (ival < 257 + 5)) { | 
 |         p = get_small_int(ival); | 
 |         assert(p != NULL); | 
 |         return p; | 
 |     } | 
 |     if (maybe) | 
 |         return p; | 
 |     else | 
 |         return NULL; | 
 | } | 
 |  | 
 | PyObject *PyLong_FromLongLong(PY_LONG_LONG ival) | 
 | { | 
 |     return PyLong_FromLong((long)ival); | 
 | } | 
 |  | 
 | PyObject *PyLong_FromSsize_t(Py_ssize_t ival) | 
 | { | 
 |     return PyLong_FromLong((long)ival); | 
 | } | 
 |  | 
 | /* tainted sinks | 
 |  * | 
 |  * Coverity considers argv, environ, read() data etc as tained. | 
 |  */ | 
 |  | 
 | PyObject *PyErr_SetFromErrnoWithFilename(PyObject *exc, const char *filename) | 
 | { | 
 |     __coverity_tainted_data_sink__(filename); | 
 |     return NULL; | 
 | } | 
 |  | 
 | /* Python/fileutils.c */ | 
 | wchar_t *_Py_char2wchar(const char* arg, size_t *size) | 
 | { | 
 |    wchar_t *w; | 
 |     __coverity_tainted_data_sink__(arg); | 
 |     __coverity_tainted_data_sink__(size); | 
 |    return w; | 
 | } | 
 |  | 
 | /* Parser/pgenmain.c */ | 
 | grammar *getgrammar(char *filename) | 
 | { | 
 |     grammar *g; | 
 |     __coverity_tainted_data_sink__(filename); | 
 |     return g; | 
 | } | 
 |  | 
 | /* Python/marshal.c */ | 
 |  | 
 | static Py_ssize_t r_string(char *s, Py_ssize_t n, RFILE *p) | 
 | { | 
 |     __coverity_tainted_string_argument__(s); | 
 |     return 0; | 
 | } | 
 |  | 
 | static long r_long(RFILE *p) | 
 | { | 
 |     long l; | 
 |     unsigned char buffer[4]; | 
 |  | 
 |     r_string((char *)buffer, 4, p); | 
 |     __coverity_tainted_string_sanitize_content__(buffer); | 
 |     l = (long)buffer; | 
 |     return l; | 
 | } | 
 |  | 
 | /* Coverity doesn't understand that fdopendir() may take ownership of fd. */ | 
 |  | 
 | DIR *fdopendir(int fd) { | 
 |     DIR *d; | 
 |     if (d) { | 
 |         __coverity_close__(fd); | 
 |     } | 
 |     return d; | 
 | } | 
 |  |