Compare commits

..

No commits in common. "2edc4942163fa12b5c5da5427cbe01ad87ff8dc4" and "c2c193f79a1be094f42d548ace0390472075b963" have entirely different histories.

3 changed files with 7 additions and 7 deletions

View File

@ -13,7 +13,6 @@
size_t page_size(void) _pure_;
#define PAGE_ALIGN(l) ALIGN_TO((l), page_size())
#define PAGE_ALIGN_DOWN(l) ((l) & ~(page_size() - 1))
#define PAGE_OFFSET(l) ((l) & (page_size() - 1))
/* Normal memcpy requires src to be nonnull. We do nothing if n is 0. */
static inline void memcpy_safe(void *dst, const void *src, size_t n) {

View File

@ -451,7 +451,7 @@ int bus_message_from_header(
if (!IN_SET(h->version, 1, 2))
return -EBADMSG;
if (h->type == _SD_BUS_MESSAGE_TYPE_INVALID)
if (h->type <= _SD_BUS_MESSAGE_TYPE_INVALID || h->type >= _SD_BUS_MESSAGE_TYPE_MAX)
return -EBADMSG;
if (!IN_SET(h->endian, BUS_LITTLE_ENDIAN, BUS_BIG_ENDIAN))
@ -589,8 +589,7 @@ _public_ int sd_bus_message_new(
assert_return(bus = bus_resolve(bus), -ENOPKG);
assert_return(bus->state != BUS_UNSET, -ENOTCONN);
assert_return(m, -EINVAL);
/* Creation of messages with _SD_BUS_MESSAGE_TYPE_INVALID is allowed. */
assert_return(type < _SD_BUS_MESSAGE_TYPE_MAX, -EINVAL);
assert_return(type > _SD_BUS_MESSAGE_TYPE_INVALID && type < _SD_BUS_MESSAGE_TYPE_MAX, -EINVAL);
sd_bus_message *t = malloc0(ALIGN(sizeof(sd_bus_message)) + sizeof(struct bus_header));
if (!t)
@ -3022,7 +3021,7 @@ int bus_body_part_map(struct bus_body_part *part) {
return 0;
}
shift = PAGE_OFFSET(part->memfd_offset);
shift = part->memfd_offset - ((part->memfd_offset / page_size()) * page_size());
psz = PAGE_ALIGN(part->size + shift);
if (part->memfd >= 0)
@ -3159,8 +3158,7 @@ static struct bus_body_part* find_part(sd_bus_message *m, size_t index, size_t s
return NULL;
if (p)
*p = part->data ? (uint8_t*) part->data + index - begin
: NULL; /* Avoid dereferencing a NULL pointer. */
*p = (uint8_t*) part->data + index - begin;
m->cached_rindex_part = part;
m->cached_rindex_part_begin = begin;
@ -5499,6 +5497,9 @@ int bus_message_parse_fields(sd_bus_message *m) {
if (m->reply_cookie == 0 || !m->error.name)
return -EBADMSG;
break;
default:
assert_not_reached("Bad message type");
}
/* Refuse non-local messages that claim they are local */