Fix possible buffer overflow in stringify bindings for Color and Tone

This commit is contained in:
刘皓 2025-04-26 18:14:23 -04:00
parent 8bae6e65db
commit 8d1bcd124e
No known key found for this signature in database
GPG key ID: 7901753DB465B711

View file

@ -171,7 +171,7 @@ RB_METHOD(ColorStringify) {
#if RAPI_FULL > 187 #if RAPI_FULL > 187
return rb_sprintf("(%f, %f, %f, %f)", c->red, c->green, c->blue, c->alpha); return rb_sprintf("(%f, %f, %f, %f)", c->red, c->green, c->blue, c->alpha);
#else #else
char buf[50] = {0}; char buf[sizeof("(%f, %f, %f, %f)") + 4 * 24] = {0};
sprintf((char *)&buf, "(%f, %f, %f, %f)", c->red, c->green, c->blue, sprintf((char *)&buf, "(%f, %f, %f, %f)", c->red, c->green, c->blue,
c->alpha); c->alpha);
return rb_str_new2(buf); return rb_str_new2(buf);
@ -186,7 +186,7 @@ RB_METHOD(ToneStringify) {
#if RAPI_FULL > 187 #if RAPI_FULL > 187
return rb_sprintf("(%f, %f, %f, %f)", t->red, t->green, t->blue, t->gray); return rb_sprintf("(%f, %f, %f, %f)", t->red, t->green, t->blue, t->gray);
#else #else
char buf[50] = {0}; char buf[sizeof("(%f, %f, %f, %f)") + 4 * 24] = {0};
sprintf((char *)&buf, "(%f, %f, %f, %f)", t->red, t->green, t->blue, t->gray); sprintf((char *)&buf, "(%f, %f, %f, %f)", t->red, t->green, t->blue, t->gray);
return rb_str_new2(buf); return rb_str_new2(buf);
#endif #endif