]> git.mdlowis.com Git - proto/labwc.git/commitdiff
scaled-scene-buffer: guard against negative sizes
authortokyo4j <hrak1529@gmail.com>
Sat, 17 May 2025 15:07:48 +0000 (00:07 +0900)
committerHiroaki Yamamoto <hrak1529@gmail.com>
Sun, 18 May 2025 21:51:42 +0000 (06:51 +0900)
src/common/scaled-icon-buffer.c
src/common/scaled-img-buffer.c
src/common/scaled-rect-buffer.c
src/common/scaled-scene-buffer.c

index cc4d631713573484ae4e9fda806b7b2d96cdcc7f..a96df609ef60297b40afbc6dd6fe484aa79c6cc5 100644 (file)
@@ -79,6 +79,9 @@ struct scaled_icon_buffer *
 scaled_icon_buffer_create(struct wlr_scene_tree *parent, struct server *server,
        int width, int height)
 {
+       assert(parent);
+       assert(width >= 0 && height >= 0);
+
        struct scaled_scene_buffer *scaled_buffer = scaled_scene_buffer_create(
                parent, &impl, /* drop_buffer */ true);
        struct scaled_icon_buffer *self = znew(*self);
index 94465d7d734d23f9edf680b226c936812e197c04..817e222c853bfc7527ee6e8795fd4ae520c1c074 100644 (file)
@@ -49,7 +49,10 @@ struct scaled_img_buffer *
 scaled_img_buffer_create(struct wlr_scene_tree *parent, struct lab_img *img,
        int width, int height)
 {
+       assert(parent);
        assert(img);
+       assert(width >= 0 && height >= 0);
+
        struct scaled_scene_buffer *scaled_buffer = scaled_scene_buffer_create(
                parent, &impl, /* drop_buffer */ true);
        struct scaled_img_buffer *self = znew(*self);
index 9bb173ee3fec968cde1ad13e2faf7c86b683bd56..318176c4af89e01129440e9d1d77e2ae160bc0fe 100644 (file)
@@ -95,14 +95,16 @@ struct scaled_rect_buffer *scaled_rect_buffer_create(
        /* TODO: support rounded corners for menus and OSDs */
 
        assert(parent);
+       assert(width >= 0 && height >= 0);
+
        struct scaled_rect_buffer *self = znew(*self);
        struct scaled_scene_buffer *scaled_buffer = scaled_scene_buffer_create(
                parent, &impl, /* drop_buffer */ true);
        scaled_buffer->data = self;
        self->scaled_buffer = scaled_buffer;
        self->scene_buffer = scaled_buffer->scene_buffer;
-       self->width = MAX(width, 1);
-       self->height = MAX(height, 1);
+       self->width = width;
+       self->height = height;
        self->border_width = border_width;
        memcpy(self->fill_color, fill_color, sizeof(self->fill_color));
        memcpy(self->border_color, border_color, sizeof(self->border_color));
index 7b5d8c40b5ece74d712b17695605a755b6ac4019..39ac44dc68f0a2b4dbb9c94485df2d5028ac87d6 100644 (file)
@@ -227,6 +227,9 @@ scaled_scene_buffer_request_update(struct scaled_scene_buffer *self,
                int width, int height)
 {
        assert(self);
+       assert(width >= 0);
+       assert(height >= 0);
+
        struct scaled_scene_buffer_cache_entry *cache_entry, *cache_entry_tmp;
        wl_list_for_each_safe(cache_entry, cache_entry_tmp, &self->cache, link) {
                _cache_entry_destroy(cache_entry, self->drop_buffer);