From: Mark Andrews Date: Fri, 17 Apr 2015 03:59:28 +0000 (+1000) Subject: add copy of Coverity models.c file X-Git-Tag: v9.11.0a1~868 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=8f1ca2e8ffbe4a411f083441bb57cd2d1b5c7808;p=thirdparty%2Fbind9.git add copy of Coverity models.c file --- diff --git a/util/models.c b/util/models.c new file mode 100644 index 00000000000..d1706866362 --- /dev/null +++ b/util/models.c @@ -0,0 +1,83 @@ +/* + * Provide a simple memory management model for lib/isc/mem.c + * which hides all the internal storage and memory filling. + */ + +#define FLARG , const char * file, unsigned int line +#define FLARG_PASS , file, line + +int condition; +void *isc__mem_get(void *mem, unsigned int size FLARG) { + if (!mem) __coverity_panic__(); + __coverity_negative_sink__(size); + if (condition) + return (0); + return (__coverity_alloc__(size)); +} + +void isc__mem_put(void *mem, void *ptr, unsigned int size FLARG) { + if (!mem) __coverity_panic__(); + __coverity_free__(ptr); +} + +void isc__mem_putanddetach(void *mem, void *ptr, unsigned int size FLARG) { + if (!mem) __coverity_panic__(); + __coverity_free__(ptr); +} + +void *isc__mem_allocate(void *mem, unsigned int size FLARG) { + if (!mem) __coverity_panic__(); + __coverity_negative_sink__(size); + if (condition) + return (0); + return (__coverity_alloc__(size)); +} + +void *memcpy(void *s1, const void *s2, size_t n); + +void * isc__mem_reallocate(void *mem, void *ptr, size_t size FLARG) { + char *p = (char *)0; + size_t l; + + if (!mem) __coverity_panic__(); + if (size > 0) { + p = isc__mem_allocate(mem, size FLARG_PASS); + if (p && ptr) { + l = (l > size) ? size : l; + memcpy(p, ptr, l); + __coverity_free__(ptr); + } + } else if (ptr) + __coverity_free__(ptr); + return (p); +} + +void isc__mem_free(void *mem, void *ptr FLARG) { + if (!mem) __coverity_panic__(); + __coverity_free__(ptr); +} + +unsigned int strlen(const char*); + +void *isc__mem_strdup(void *mem, char *s FLARG) { + void *d; + if (!mem) __coverity_panic__(); + if (condition) + return (0); + d = __coverity_alloc__(strlen(s) + 1); + __coverity_writeall__(d); + return (d); +} + +void *isc__mempool_get(void *mem FLARG) { + unsigned int size; + if (!mem) __coverity_panic__(); + if (condition) + return (0); + return (__coverity_alloc__(size)); +} + +void isc__mempool_put(void *mem, void *ptr FLARG) { + if (!mem) __coverity_panic__(); + __coverity_free__(ptr); +}