diff --git a/libavcodec/common.h b/libavcodec/common.h
index c33812e697871bd6203966062a5e8927a7812ba6..ec81297ba25940dc880cf673f78ac7f9ae4a3124 100644
--- a/libavcodec/common.h
+++ b/libavcodec/common.h
@@ -500,6 +500,7 @@ tend= rdtsc();\
 #define rand rand_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
+#define strcat strcat_is_forbidden_due_to_security_issues_use_pstrcat
 #if !(defined(LIBAVFORMAT_BUILD) || defined(_FRAMEHOOK_H))
 #define printf please_use_av_log
 #define fprintf please_use_av_log
diff --git a/vhook/ppm.c b/vhook/ppm.c
index 022f6a106bf953875ceb9afae5dbc2acc1b8f88b..8e48dd9574edd846d1202a40d6fc26e9dbf40504 100644
--- a/vhook/ppm.c
+++ b/vhook/ppm.c
@@ -55,14 +55,15 @@ rwpipe *rwpipe_open( int argc, char *argv[] )
 
         if ( this->pid == 0 )
         {
-            char *command = av_mallocz( 10240 );
+#define COMMAND_SIZE 10240
+            char *command = av_mallocz( COMMAND_SIZE );
             int i;
 
             strcpy( command, "" );
             for ( i = 0; i < argc; i ++ )
             {
-                strcat( command, argv[ i ] );
-                strcat( command, " " );
+                pstrcat( command, COMMAND_SIZE, argv[ i ] );
+                pstrcat( command, COMMAND_SIZE, " " );
             }
 
             dup2( output[ 0 ], STDIN_FILENO );