/** Fill a tcp_info or return kr_error(). */
static int get_tcp_info(const struct kr_request *req, struct tcp_info *info)
{
- assert(req && info);
+ if(!kr_assume(req && info))
+ return kr_error(EINVAL);
if (!req->qsource.dst_addr || !req->qsource.flags.tcp) /* not TCP-based */
return -abs(ENOENT);
/* First obtain the file-descriptor. */
return writer;
}
-/* find_string
+/* find_string
* create a new string from json
* *var is set to pointer of new string
* node must of type JSON_STRING
* new string can be at most len bytes
*/
static int find_string(const JsonNode *node, char **val, size_t len) {
- if (!node || !node->key) {
+ if (!node || !node->key)
+ return kr_error(EINVAL);
+ if (!kr_assume(node->tag == JSON_STRING))
return kr_error(EINVAL);
- }
- assert(node->tag == JSON_STRING);
*val = strndup(node->string_, len);
- assert(*val != NULL);
+ if (!kr_assume(*val != NULL))
+ return kr_error(EFAULT);
return kr_ok();
}
/* find_bool returns bool from json */
static bool find_bool(const JsonNode *node) {
- if (!node || !node->key) {
+ if (!node || !node->key)
+ return false;
+ if (!kr_assume(node->tag == JSON_BOOL))
return false;
- }
- assert(node->tag == JSON_BOOL);
return node->bool_;
}