Project

General

Profile

Actions

Bug #9861

closed

BSD_vfprintf precsion doesn't work at shorter string

Added by nobu (Nobuyoshi Nakada) almost 10 years ago. Updated over 9 years ago.

Status:
Closed
Target version:
ruby -v:
1.4.0 or later
[ruby-core:62737]

Description

ruby_snprintfなどで"%s"に精度を指定してその精度よりも短い文字列を渡すと、本来の長さが無視されて精度まで'\0'が詰められます。

/* t.c */
#include <ruby/ruby.h>

int main(void)
{
    char buf[26];
    ruby_snprintf(buf, sizeof(buf), "%.2s", "s");
    printf("[%.2x][%.2x][%.2x]\n", buf[0], buf[1], buf[2]);
    return 0;
}
$ make t LDLIBS='$(LIBRUBYARG_STATIC) $(LIBS)'
$ ./t
[73][00][00]

最初のmissing/vsnprintf.cからあるようなので、1.4.0以降すべてのバージョンにあるバグだと思います。

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0