[FFmpeg-cvslog] log:Sanitize string of most control chars before printing.

Michael Niedermayer git at videolan.org
Fri Mar 25 01:49:47 CET 2011


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Fri Mar 25 00:20:07 2011 +0100| [0a51362b3f3c3a0df09b24fbd9049711bff6fb94] | committer: Michael Niedermayer

log:Sanitize string of most control chars before printing.
This may be security relevant depending upon the used terminal.

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0a51362b3f3c3a0df09b24fbd9049711bff6fb94
---

 libavutil/log.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/libavutil/log.c b/libavutil/log.c
index 6c9e76a..b3c9358 100644
--- a/libavutil/log.c
+++ b/libavutil/log.c
@@ -82,6 +82,14 @@ const char* av_default_item_name(void* ptr){
     return (*(AVClass**)ptr)->class_name;
 }
 
+static void sanitize(uint8_t *line){
+    while(*line){
+        if(*line < 0x08 || (*line > 0x0D && *line < 0x20))
+            *line='?';
+        line++;
+    }
+}
+
 void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl)
 {
     static int print_prefix=1;
@@ -121,8 +129,9 @@ void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl)
         fprintf(stderr, "    Last message repeated %d times\n", count);
         count=0;
     }
-    colored_fputs(av_clip(level>>3, 0, 6), line);
     strcpy(prev, line);
+    sanitize(line);
+    colored_fputs(av_clip(level>>3, 0, 6), line);
 }
 
 static void (*av_log_callback)(void*, int, const char*, va_list) = av_log_default_callback;




More information about the ffmpeg-cvslog mailing list