Make sure calls to dirname that modify the string passed in aren't trying to modify read-only memory

master
teknomunk 5 months ago
parent ba60545243
commit 74376d4552

11
dir.c

@ -3,20 +3,27 @@
#include <sys/stat.h>
#include <libgen.h>
#include <string.h>
#include <stdlib.h>
void mkdir_p( char* buffer, int mode )
void mkdir_p_inside( char* buffer, int mode )
{
if( !*buffer || buffer[1] == '/' ) { return; }
struct stat s = {0};
dirname(buffer);
if( -1 == stat(buffer,&s) ) {
mkdir_p( buffer, mode );
mkdir_p_inside( buffer, mode );
}
buffer[strlen(buffer)] = '/';
mkdir( buffer, mode );
}
void mkdir_p( char* buffer, int mode )
{
char* copy = strdup(buffer);
mkdir_p_inside(copy,mode);
free(copy);
}
void util_dir_create_containing( const char* buffer, int mode )
{
int size = strlen(buffer);

Loading…
Cancel
Save