diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/bitmap.c | 9 | ||||
| -rw-r--r-- | src/lib/dev.c | 20 | 
2 files changed, 23 insertions, 6 deletions
diff --git a/src/lib/bitmap.c b/src/lib/bitmap.c index 0e3c968f..e84145b2 100644 --- a/src/lib/bitmap.c +++ b/src/lib/bitmap.c @@ -112,7 +112,7 @@ struct bmp * bmp_create(size_t bits, ssize_t offset)                  return NULL;          tmp->bitmap = malloc(BITS_TO_LONGS(bits) * sizeof(unsigned long)); -        if (!tmp->bitmap) { +        if (tmp->bitmap == NULL) {                  free(tmp);                  return NULL;          } @@ -142,6 +142,9 @@ int bmp_destroy(struct bmp * b)  static ssize_t bad_id(struct bmp * b)  { +        if (b == NULL) +                return -1; +          return b->offset - 1;  } @@ -177,7 +180,7 @@ static bool is_id_valid(struct bmp * b,  bool bmp_is_id_valid(struct bmp * b,                       ssize_t id)  { -        if (!b) +        if (b == NULL)                  return false;          return is_id_valid(b, id); @@ -188,7 +191,7 @@ int bmp_release(struct bmp * b,  {          ssize_t rid; -        if (!b) +        if (b == NULL)                  return -1;          if (!is_id_valid(b, id)) diff --git a/src/lib/dev.c b/src/lib/dev.c index 40bf2dc3..c99e8cdb 100644 --- a/src/lib/dev.c +++ b/src/lib/dev.c @@ -249,12 +249,26 @@ int flow_accept(int     fd,                  return -1;          } +        *ap_name = strdup(recv_msg->ap_name); +        if (*ap_name == NULL) { +                bmp_release(_ap_instance->fds, cfd); +                irm_msg__free_unpacked(recv_msg, NULL); +                return -1; +        } + +        if (ae_name != NULL) { +                *ae_name = strdup(recv_msg->ae_name); +                if (*ae_name == NULL) { +                        bmp_release(_ap_instance->fds, cfd); +                        irm_msg__free_unpacked(recv_msg, NULL); +                        return -1; +                } +        } +          _ap_instance->flows[cfd].port_id = recv_msg->port_id;          _ap_instance->flows[cfd].oflags  = FLOW_O_DEFAULT; -        *ap_name = strdup(recv_msg->ap_name); -        if (ae_name != NULL) -                *ae_name = strdup(recv_msg->ae_name); +          irm_msg__free_unpacked(recv_msg, NULL);  | 
