提交 2fc8ea24 编写于 作者: M Michael Niedermayer

dissallow sprintf

Originally committed as revision 3823 to svn://svn.ffmpeg.org/ffmpeg/trunk
上级 0ecca7a4
...@@ -949,7 +949,7 @@ static void do_video_stats(AVFormatContext *os, AVOutputStream *ost, ...@@ -949,7 +949,7 @@ static void do_video_stats(AVFormatContext *os, AVOutputStream *ost,
if (!fvstats) { if (!fvstats) {
today2 = time(NULL); today2 = time(NULL);
today = localtime(&today2); today = localtime(&today2);
sprintf(filename, "vstats_%02d%02d%02d.log", today->tm_hour, snprintf(filename, sizeof(filename), "vstats_%02d%02d%02d.log", today->tm_hour,
today->tm_min, today->tm_min,
today->tm_sec); today->tm_sec);
fvstats = fopen(filename,"w"); fvstats = fopen(filename,"w");
......
...@@ -415,7 +415,8 @@ int options_example(int argc, char* argv[]) ...@@ -415,7 +415,8 @@ int options_example(int argc, char* argv[])
AVCodec* codec = avcodec_find_encoder_by_name((argc > 1) ? argv[2] : "mpeg4"); AVCodec* codec = avcodec_find_encoder_by_name((argc > 1) ? argv[2] : "mpeg4");
const AVOption* c; const AVOption* c;
AVCodecContext* avctx; AVCodecContext* avctx;
char* def = av_malloc(5000); #define DEF_SIZE 5000
char* def = av_malloc(DEF_SIZE);
const char* col = ""; const char* col = "";
int i = 0; int i = 0;
...@@ -449,16 +450,16 @@ int options_example(int argc, char* argv[]) ...@@ -449,16 +450,16 @@ int options_example(int argc, char* argv[])
"unknown??", c->name); "unknown??", c->name);
switch (t) { switch (t) {
case FF_OPT_TYPE_BOOL: case FF_OPT_TYPE_BOOL:
i += sprintf(def + i, "%s%s=%s", i += snprintf(def + i, DEF_SIZE-i, "%s%s=%s",
col, c->name, col, c->name,
c->defval != 0. ? "on" : "off"); c->defval != 0. ? "on" : "off");
break; break;
case FF_OPT_TYPE_DOUBLE: case FF_OPT_TYPE_DOUBLE:
i += sprintf(def + i, "%s%s=%f", i += snprintf(def + i, DEF_SIZE-i, "%s%s=%f",
col, c->name, c->defval); col, c->name, c->defval);
break; break;
case FF_OPT_TYPE_INT: case FF_OPT_TYPE_INT:
i += sprintf(def + i, "%s%s=%d", i += snprintf(def + i, DEF_SIZE-i, "%s%s=%d",
col, c->name, (int) c->defval); col, c->name, (int) c->defval);
break; break;
case FF_OPT_TYPE_STRING: case FF_OPT_TYPE_STRING:
...@@ -467,7 +468,7 @@ int options_example(int argc, char* argv[]) ...@@ -467,7 +468,7 @@ int options_example(int argc, char* argv[])
char* f = strchr(d, ','); char* f = strchr(d, ',');
if (f) if (f)
*f = 0; *f = 0;
i += sprintf(def + i, "%s%s=%s", i += snprintf(def + i, DEF_SIZE-i, "%s%s=%s",
col, c->name, d); col, c->name, d);
av_free(d); av_free(d);
} }
......
...@@ -499,6 +499,7 @@ tend= rdtsc();\ ...@@ -499,6 +499,7 @@ tend= rdtsc();\
#define time time_is_forbidden_due_to_security_issues #define time time_is_forbidden_due_to_security_issues
#define rand rand_is_forbidden_due_to_state_trashing #define rand rand_is_forbidden_due_to_state_trashing
#define srand srand_is_forbidden_due_to_state_trashing #define srand srand_is_forbidden_due_to_state_trashing
#define sprintf sprintf_is_forbidden_due_to_security_issues_use_snprintf
#if !(defined(LIBAVFORMAT_BUILD) || defined(_FRAMEHOOK_H)) #if !(defined(LIBAVFORMAT_BUILD) || defined(_FRAMEHOOK_H))
#define printf please_use_av_log #define printf please_use_av_log
#define fprintf please_use_av_log #define fprintf please_use_av_log
......
...@@ -1170,13 +1170,14 @@ static int encode_frame(AVCodecContext *avctx, unsigned char *buf, int buf_size, ...@@ -1170,13 +1170,14 @@ static int encode_frame(AVCodecContext *avctx, unsigned char *buf, int buf_size,
if((s->flags&CODEC_FLAG_PASS1) && (s->picture_number&31)==0){ if((s->flags&CODEC_FLAG_PASS1) && (s->picture_number&31)==0){
int j; int j;
char *p= avctx->stats_out; char *p= avctx->stats_out;
char *end= p + 1024*30;
for(i=0; i<3; i++){ for(i=0; i<3; i++){
for(j=0; j<256; j++){ for(j=0; j<256; j++){
sprintf(p, "%llu ", s->stats[i][j]); snprintf(p, end-p, "%llu ", s->stats[i][j]);
p+= strlen(p); p+= strlen(p);
s->stats[i][j]= 0; s->stats[i][j]= 0;
} }
sprintf(p, "\n"); snprintf(p, end-p, "\n");
p++; p++;
} }
}else{ }else{
......
...@@ -730,7 +730,7 @@ int main(int argc, char **argv) ...@@ -730,7 +730,7 @@ int main(int argc, char **argv)
img + 50 * XSIZE, XSIZE, XSIZE, YSIZE - 100); img + 50 * XSIZE, XSIZE, XSIZE, YSIZE - 100);
img_resample_close(s); img_resample_close(s);
sprintf(buf, "/tmp/out%d.pgm", i); snprintf(buf, sizeof(buf), "/tmp/out%d.pgm", i);
save_pgm(buf, img1, xsize, ysize); save_pgm(buf, img1, xsize, ysize);
} }
......
...@@ -2130,7 +2130,7 @@ void sample_dump(int fnum, int32_t *tab, int n) ...@@ -2130,7 +2130,7 @@ void sample_dump(int fnum, int32_t *tab, int n)
f = files[fnum]; f = files[fnum];
if (!f) { if (!f) {
sprintf(buf, "/tmp/out%d.%s.pcm", snprintf(buf, sizeof(buf), "/tmp/out%d.%s.pcm",
fnum, fnum,
#ifdef USE_HIGHPRECISION #ifdef USE_HIGHPRECISION
"hp" "hp"
......
...@@ -38,7 +38,7 @@ static int init_pass2(MpegEncContext *s); ...@@ -38,7 +38,7 @@ static int init_pass2(MpegEncContext *s);
static double get_qscale(MpegEncContext *s, RateControlEntry *rce, double rate_factor, int frame_num); static double get_qscale(MpegEncContext *s, RateControlEntry *rce, double rate_factor, int frame_num);
void ff_write_pass1_stats(MpegEncContext *s){ void ff_write_pass1_stats(MpegEncContext *s){
sprintf(s->avctx->stats_out, "in:%d out:%d type:%d q:%d itex:%d ptex:%d mv:%d misc:%d fcode:%d bcode:%d mc-var:%d var:%d icount:%d;\n", snprintf(s->avctx->stats_out, 256, "in:%d out:%d type:%d q:%d itex:%d ptex:%d mv:%d misc:%d fcode:%d bcode:%d mc-var:%d var:%d icount:%d;\n",
s->current_picture_ptr->display_picture_number, s->current_picture_ptr->coded_picture_number, s->pict_type, s->current_picture_ptr->display_picture_number, s->current_picture_ptr->coded_picture_number, s->pict_type,
s->current_picture.quality, s->i_tex_bits, s->p_tex_bits, s->mv_bits, s->misc_bits, s->current_picture.quality, s->i_tex_bits, s->p_tex_bits, s->mv_bits, s->misc_bits,
s->f_code, s->b_code, s->current_picture.mc_mb_var_sum, s->current_picture.mb_var_sum, s->i_count); s->f_code, s->b_code, s->current_picture.mc_mb_var_sum, s->current_picture.mb_var_sum, s->i_count);
......
...@@ -762,7 +762,7 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) ...@@ -762,7 +762,7 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
strcpy(channels_str, "5:1"); strcpy(channels_str, "5:1");
break; break;
default: default:
sprintf(channels_str, "%d channels", enc->channels); snprintf(channels_str, sizeof(channels_str), "%d channels", enc->channels);
break; break;
} }
if (enc->sample_rate) { if (enc->sample_rate) {
......
...@@ -121,7 +121,7 @@ struct addrinfo* udp_ipv6_resolve_host(const char *hostname, int port, int type, ...@@ -121,7 +121,7 @@ struct addrinfo* udp_ipv6_resolve_host(const char *hostname, int port, int type,
const char *node = 0, *service = 0; const char *node = 0, *service = 0;
if (port > 0) { if (port > 0) {
sprintf(sport, "%d", port); snprintf(sport, sizeof(sport), "%d", port);
service = sport; service = sport;
} }
if ((hostname) && (hostname[0] != '\0') && (hostname[0] != '?')) { if ((hostname) && (hostname[0] != '\0') && (hostname[0] != '?')) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册