#ifdef SILC_DIST_INPLACE
SILC_ASSERT(len <= silc_buffer_len(sb));
#endif /* SILC_DIST_INPLACE */
- if (silc_unlikely(len > silc_buffer_len(sb)))
+ if (silc_unlikely(len > silc_buffer_len(sb))) {
+ silc_set_errno(SILC_ERR_OVERFLOW);
return NULL;
+ }
sb->data += len;
return old_data;
#ifdef SILC_DIST_INPLACE
SILC_ASSERT((sb->data - len) >= sb->head);
#endif /* SILC_DIST_INPLACE */
- if (silc_unlikely((sb->data - len) < sb->head))
+ if (silc_unlikely((sb->data - len) < sb->head)) {
+ silc_set_errno(SILC_ERR_UNDERFLOW);
return NULL;
+ }
sb->data -= len;
return old_data;
#ifdef SILC_DIST_INPLACE
SILC_ASSERT(len <= silc_buffer_taillen(sb));
#endif /* SILC_DIST_INPLACE */
- if (silc_unlikely(len > silc_buffer_taillen(sb)))
+ if (silc_unlikely(len > silc_buffer_taillen(sb))) {
+ silc_set_errno(SILC_ERR_OVERFLOW);
return NULL;
+ }
sb->tail += len;
return old_tail;
#ifdef SILC_DIST_INPLACE
SILC_ASSERT((sb->tail - len) >= sb->data);
#endif /* SILC_DIST_INPLACE */
- if (silc_unlikely((sb->tail - len) < sb->data))
+ if (silc_unlikely((sb->tail - len) < sb->data)) {
+ silc_set_errno(SILC_ERR_UNDERFLOW);
return NULL;
+ }
sb->tail -= len;
return old_tail;
#ifdef SILC_DIST_INPLACE
SILC_ASSERT(len <= silc_buffer_headlen(sb));
#endif /* SILC_DIST_INPLACE */
- if (silc_unlikely(len > silc_buffer_headlen(sb)))
+ if (silc_unlikely(len > silc_buffer_headlen(sb))) {
+ silc_set_errno(SILC_ERR_OVERFLOW);
return NULL;
+ }
return (unsigned char *)memcpy(sb->head, data, len);
}
#ifdef SILC_DIST_INPLACE
SILC_ASSERT(len <= silc_buffer_len(sb));
#endif /* SILC_DIST_INPLACE */
- if (silc_unlikely(len > silc_buffer_len(sb)))
+ if (silc_unlikely(len > silc_buffer_len(sb))) {
+ silc_set_errno(SILC_ERR_OVERFLOW);
return NULL;
+ }
return (unsigned char *)memcpy(sb->data, data, len);
}
#ifdef SILC_DIST_INPLACE
SILC_ASSERT(len <= silc_buffer_taillen(sb));
#endif /* SILC_DIST_INPLACE */
- if (silc_unlikely(len > silc_buffer_taillen(sb)))
+ if (silc_unlikely(len > silc_buffer_taillen(sb))) {
+ silc_set_errno(SILC_ERR_OVERFLOW);
return NULL;
+ }
return (unsigned char *)memcpy(sb->tail, data, len);
}