blob: add blob_memdup()

This commit is contained in:
Felix Fietkau 2012-06-01 20:54:05 +02:00
parent 0608d12995
commit 5cfe2696f0
2 changed files with 15 additions and 0 deletions

14
blob.c
View file

@ -243,3 +243,17 @@ blob_attr_equal(const struct blob_attr *a1, const struct blob_attr *a2)
return !memcmp(a1, a2, blob_pad_len(a1)); return !memcmp(a1, a2, blob_pad_len(a1));
} }
struct blob_attr *
blob_memdup(struct blob_attr *attr)
{
struct blob_attr *ret;
int size = blob_pad_len(attr);
ret = malloc(size);
if (!ret)
return NULL;
memcpy(ret, attr, size);
return ret;
}

1
blob.h
View file

@ -242,6 +242,7 @@ extern void blob_nest_end(struct blob_buf *buf, void *cookie);
extern struct blob_attr *blob_put(struct blob_buf *buf, int id, const void *ptr, int len); extern struct blob_attr *blob_put(struct blob_buf *buf, int id, const void *ptr, int len);
extern bool blob_check_type(const void *ptr, int len, int type); extern bool blob_check_type(const void *ptr, int len, int type);
extern int blob_parse(struct blob_attr *attr, struct blob_attr **data, const struct blob_attr_info *info, int max); extern int blob_parse(struct blob_attr *attr, struct blob_attr **data, const struct blob_attr_info *info, int max);
extern struct blob_attr *blob_memdup(struct blob_attr *attr);
static inline struct blob_attr * static inline struct blob_attr *
blob_put_string(struct blob_buf *buf, int id, const char *str) blob_put_string(struct blob_buf *buf, int id, const char *str)