@@ -47,7 +47,7 @@ static void readArgumentsFromFile(const char* file_, LoggerVector* args_)
4747 char * line = NULL ;
4848 size_t lineSize = 0 ;
4949 ssize_t readSize ;
50-
50+
5151 FILE * file = fopen (file_ , "r" );
5252 if (!file )
5353 {
@@ -121,18 +121,18 @@ static int handleClassPath(
121121
122122 * * resCp_ = 0 ;
123123 classPath = (char * ) malloc ((strlen (cp_ ) + 1 ) * sizeof (char ));
124- strcpy (classPath , cp_ );
124+ safe_strcpy (classPath , cp_ , strlen ( cp_ ) + 1 );
125125
126126 for (cpPart = strtok (classPath , ":" ); cpPart ; cpPart = strtok (NULL , ":" ))
127127 {
128128 size_t i ;
129129 char * * words ;
130130 wordexp_t we ;
131-
131+
132132 memset (& we , 0 , sizeof (wordexp_t ));
133133 if (wordexp (cpPart , & we , WRDE_NOCMD | WRDE_UNDEF ) != 0 )
134134 {
135- strcpy (* resCp_ , cp_ );
135+ safe_strcpy (* resCp_ , cp_ , PATH_MAX );
136136 free (classPath );
137137 return 0 ;
138138 }
@@ -155,7 +155,7 @@ static int handleClassPath(
155155 if (!newMem )
156156 {
157157 /* Out of memory */
158- strcpy (* resCp_ , cp_ );
158+ safe_strcpy (* resCp_ , cp_ , PATH_MAX );
159159 free (classPath );
160160 wordfree (& we );
161161 return 0 ;
@@ -165,8 +165,8 @@ static int handleClassPath(
165165 * resCpSize_ = currSize * 2 ;
166166 }
167167
168- strcat (* resCp_ , path );
169- strcat (* resCp_ , ":" );
168+ safe_strcat (* resCp_ , path , PATH_MAX );
169+ safe_strcat (* resCp_ , ":" , PATH_MAX );
170170 }
171171
172172 wordfree (& we );
@@ -202,16 +202,16 @@ static void processArg(const char* arg_, ParserData* data_)
202202 return ;
203203 }
204204
205- strcpy (argToAdd , arg_ );
205+ safe_strcpy (argToAdd , arg_ , PATH_MAX );
206206
207207 if (data_ -> state == InClassDir )
208208 {
209209 if (!loggerMakePathAbs (arg_ , data_ -> classdir , 0 ))
210210 {
211- strcpy (data_ -> classdir , arg_ );
211+ safe_strcpy (data_ -> classdir , arg_ , PATH_MAX );
212212 }
213213
214- strcpy (argToAdd , data_ -> classdir );
214+ safe_strcpy (argToAdd , data_ -> classdir , PATH_MAX );
215215 data_ -> state = Normal ;
216216 }
217217 else if (data_ -> state == InClassPath )
@@ -287,7 +287,7 @@ int loggerJavacParserCollectActions(
287287 LoggerVector fargs ;
288288
289289 loggerVectorInit (& fargs );
290-
290+
291291 readArgumentsFromFile (argv_ [i ] + 1 , & fargs );
292292 for (j = 0 ; j < fargs .size ; ++ j )
293293 {
@@ -330,17 +330,17 @@ int loggerJavacParserCollectActions(
330330 if (data .classdir [0 ] != 0 )
331331 {
332332 char * fname = loggerGetFileName (src , 1 );
333- strcpy (outputFile , data .classdir );
334- strcat (outputFile , "/" );
335- strcat (outputFile , fname );
336- strcat (outputFile , ".class" );
333+ safe_strcpy (outputFile , data .classdir , PATH_MAX );
334+ safe_strcat (outputFile , "/" , PATH_MAX );
335+ safe_strcat (outputFile , fname , PATH_MAX );
336+ safe_strcat (outputFile , ".class" , PATH_MAX );
337337 free (fname );
338338 }
339339 else
340340 {
341341 char * path = loggerGetFilePathWithoutExt (src );
342- strcpy (outputFile , path );
343- strcat (outputFile , ".class" );
342+ safe_strcpy (outputFile , path , PATH_MAX );
343+ safe_strcat (outputFile , ".class" , PATH_MAX );
344344 free (path );
345345 }
346346
0 commit comments