summaryrefslogtreecommitdiff
path: root/attrib/att.c
diff options
context:
space:
mode:
authorClaudio Takahasi <claudio.takahasi@openbossa.org>2011-02-24 18:18:22 -0300
committerJohan Hedberg <johan.hedberg@nokia.com>2011-02-24 18:35:17 -0300
commit448456a19f74226062b3157a203bfe25dbdfef90 (patch)
tree0815325519570c1da9c442f6149cbcc02a2edb46 /attrib/att.c
parent28d393d7a2c381132eff76771c6d740fcf05bbfc (diff)
downloadbluez-448456a19f74226062b3157a203bfe25dbdfef90.tar.gz
Coding standard change replacing malloc by glib functions
Use glib memory allocation functions instead of malloc for attribute data list in ATT protocol utility functions.
Diffstat (limited to 'attrib/att.c')
-rw-r--r--attrib/att.c76
1 files changed, 45 insertions, 31 deletions
diff --git a/attrib/att.c b/attrib/att.c
index 3259fca62..b96b97df9 100644
--- a/attrib/att.c
+++ b/attrib/att.c
@@ -80,13 +80,34 @@ const char *att_ecode2str(uint8_t status)
void att_data_list_free(struct att_data_list *list)
{
+ if (list == NULL)
+ return;
+
+ if (list->data) {
+ int i;
+ for (i = 0; i < list->num; i++)
+ g_free(list->data[i]);
+ }
+
+ g_free(list->data);
+ g_free(list);
+}
+
+struct att_data_list *att_data_list_alloc(uint16_t num, uint16_t len)
+{
+ struct att_data_list *list;
int i;
- for (i = 0; i < list->num; i++)
- free(list->data[i]);
+ list = g_new0(struct att_data_list, 1);
+ list->len = len;
+ list->num = num;
- free(list->data);
- free(list);
+ list->data = g_malloc0(sizeof(uint8_t *) * num);
+
+ for (i = 0; i < num; i++)
+ list->data[i] = g_malloc0(sizeof(uint8_t) * len);
+
+ return list;
}
uint16_t enc_read_by_grp_req(uint16_t start, uint16_t end, uuid_t *uuid,
@@ -178,20 +199,19 @@ struct att_data_list *dec_read_by_grp_resp(const uint8_t *pdu, int len)
{
struct att_data_list *list;
const uint8_t *ptr;
+ uint16_t elen, num;
int i;
if (pdu[0] != ATT_OP_READ_BY_GROUP_RESP)
return NULL;
- list = malloc(sizeof(struct att_data_list));
- list->len = pdu[1];
- list->num = (len - 2) / list->len;
+ elen = pdu[1];
+ num = (len - 2) / elen;
+ list = att_data_list_alloc(num, elen);
- list->data = malloc(sizeof(uint8_t *) * list->num);
ptr = &pdu[2];
- for (i = 0; i < list->num; i++) {
- list->data[i] = malloc(sizeof(uint8_t) * list->len);
+ for (i = 0; i < num; i++) {
memcpy(list->data[i], ptr, list->len);
ptr += list->len;
}
@@ -307,7 +327,7 @@ GSList *dec_find_by_type_resp(const uint8_t *pdu, int len)
return NULL;
for (offset = 1, matches = NULL; len >= (offset + 4); offset += 4) {
- range = malloc(sizeof(struct att_range));
+ range = g_new0(struct att_range, 1);
range->start = att_get_u16(&pdu[offset]);
range->end = att_get_u16(&pdu[offset + 2]);
@@ -406,20 +426,19 @@ struct att_data_list *dec_read_by_type_resp(const uint8_t *pdu, int len)
{
struct att_data_list *list;
const uint8_t *ptr;
+ uint16_t elen, num;
int i;
if (pdu[0] != ATT_OP_READ_BY_TYPE_RESP)
return NULL;
- list = malloc(sizeof(struct att_data_list));
- list->len = pdu[1];
- list->num = (len - 2) / list->len;
+ elen = pdu[1];
+ num = (len - 2) / elen;
+ list = att_data_list_alloc(num, elen);
- list->data = malloc(sizeof(uint8_t *) * list->num);
ptr = &pdu[2];
- for (i = 0; i < list->num; i++) {
- list->data[i] = malloc(sizeof(uint8_t) * list->len);
+ for (i = 0; i < num; i++) {
memcpy(list->data[i], ptr, list->len);
ptr += list->len;
}
@@ -775,6 +794,7 @@ struct att_data_list *dec_find_info_resp(const uint8_t *pdu, int len,
{
struct att_data_list *list;
uint8_t *ptr;
+ uint16_t elen, num;
int i;
if (pdu == NULL)
@@ -787,22 +807,19 @@ struct att_data_list *dec_find_info_resp(const uint8_t *pdu, int len,
return 0;
*format = pdu[1];
-
- list = malloc(sizeof(struct att_data_list));
-
- list->len = sizeof(pdu[0]) + sizeof(*format);
+ elen = sizeof(pdu[0]) + sizeof(*format);
if (*format == 0x01)
- list->len += 2;
+ elen += 2;
else if (*format == 0x02)
- list->len += 16;
+ elen += 16;
- list->num = (len - 2) / list->len;
- list->data = malloc(sizeof(uint8_t *) * list->num);
+ num = (len - 2) / elen;
ptr = (void *) &pdu[2];
- for (i = 0; i < list->num; i++) {
- list->data[i] = malloc(list->len);
+ list = att_data_list_alloc(num, elen);
+
+ for (i = 0; i < num; i++) {
memcpy(list->data[i], ptr, list->len);
ptr += list->len;
}
@@ -859,10 +876,7 @@ struct attribute *dec_indication(const uint8_t *pdu, int len)
if (len < min_len)
return NULL;
- a = malloc(sizeof(struct attribute) + len - min_len);
- if (a == NULL)
- return NULL;
-
+ a = g_malloc0(sizeof(struct attribute) + len - min_len);
a->len = len - min_len;
a->handle = att_get_u16(&pdu[1]);