From 6a5cc2e3ee12c824e0364948afd1efa11185d916 Mon Sep 17 00:00:00 2001 From: Ozkan Sezer Date: Sun, 7 Oct 2018 12:32:15 +0300 Subject: [PATCH] back-out 23d69b66 (bug #1386: GNU/Hurd) for 1.2 branch, define PATH_MAX as 4096 if not defined. --- music_cmd.c | 13 ++++++------- music_cmd.h | 7 +++++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/music_cmd.c b/music_cmd.c index 63fcaa63..968794b3 100644 --- a/music_cmd.c +++ b/music_cmd.c @@ -53,8 +53,10 @@ MusicCMD *MusicCMD_LoadSong(const char *cmd, const char *file) Mix_SetError("Out of memory"); return(NULL); } - music->file = SDL_strdup(file); - music->cmd = SDL_strdup(cmd); + strncpy(music->file, file, (sizeof music->file)-1); + music->file[(sizeof music->file)-1] = '\0'; + strncpy(music->cmd, cmd, (sizeof music->cmd)-1); + music->cmd[(sizeof music->cmd)-1] = '\0'; music->pid = 0; /* We're done */ @@ -153,7 +155,7 @@ void MusicCMD_Start(MusicCMD *music) /* Child process - executes here */ case 0: { - char *command; + char command[PATH_MAX]; char **argv; /* Unblock signals in case we're called from a thread */ @@ -164,12 +166,11 @@ void MusicCMD_Start(MusicCMD *music) } /* Execute the command */ - command = SDL_strdup(music->cmd); + strcpy(command, music->cmd); argv = parse_args(command, music->file); if ( argv != NULL ) { execvp(argv[0], argv); } - SDL_free(command); /* exec() failed */ perror(argv[0]); @@ -218,8 +219,6 @@ void MusicCMD_Resume(MusicCMD *music) /* Close the given music stream */ void MusicCMD_FreeSong(MusicCMD *music) { - SDL_free(music->file); - SDL_free(music->cmd); SDL_free(music); } diff --git a/music_cmd.h b/music_cmd.h index 3ff971e3..541fb29f 100644 --- a/music_cmd.h +++ b/music_cmd.h @@ -29,9 +29,12 @@ #if defined(__linux__) && defined(__arm__) # include #endif +#ifndef PATH_MAX /* GNU/Hurd? */ +# define PATH_MAX 4096 +#endif typedef struct { - char *file; - char *cmd; + char file[PATH_MAX]; + char cmd[PATH_MAX]; pid_t pid; } MusicCMD;