X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=blob.c;h=faa3bb8061eb2d5f630a6a4f7c44d03d138a14ae;hb=a2453456f2942e04d2b2caaf324aa0b7c2ed74eb;hp=6d66fcdb85ce04b61363afb0742a6127faf16247;hpb=be458596bd13f0a708d52efaa5c70bac2f8fe97d;p=project%2Flibubox.git diff --git a/blob.c b/blob.c index 6d66fcd..faa3bb8 100644 --- a/blob.c +++ b/blob.c @@ -40,14 +40,14 @@ blob_init(struct blob_attr *attr, int id, unsigned int len) static inline struct blob_attr * offset_to_attr(struct blob_buf *buf, int offset) { - void *ptr = (char *)buf->buf + offset; + void *ptr = (char *)buf->buf + offset - BLOB_COOKIE; return ptr; } static inline int attr_to_offset(struct blob_buf *buf, struct blob_attr *attr) { - return (char *)attr - (char *) buf->buf; + return (char *)attr - (char *) buf->buf + BLOB_COOKIE; } void @@ -65,7 +65,7 @@ static struct blob_attr * blob_add(struct blob_buf *buf, struct blob_attr *pos, int id, int payload) { int offset = attr_to_offset(buf, pos); - int required = (offset + sizeof(struct blob_attr) + payload) - buf->buflen; + int required = (offset - BLOB_COOKIE + sizeof(struct blob_attr) + payload) - buf->buflen; struct blob_attr *attr; if (required > 0) {