Prevented potential memory fault with burn_set_signal_handling()

This commit is contained in:
Thomas Schmitt 2010-03-08 09:24:21 +00:00
parent ed6e2df81b
commit cdad7fcd80
3 changed files with 7 additions and 4 deletions

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2010.03.07.081704" #define Cdrskin_timestamP "2010.03.08.092608"

View File

@ -490,7 +490,8 @@ void burn_set_signal_handling(void *handle, burn_abort_handler_t handler,
} }
strcpy(abort_message_prefix, "libburn : "); strcpy(abort_message_prefix, "libburn : ");
if(handle != NULL) abort_message_prefix[0] = 0;
if(handle != NULL && handler == burn_builtin_abort_handler)
strncpy(abort_message_prefix, (char *) handle, strncpy(abort_message_prefix, (char *) handle,
sizeof(abort_message_prefix)-1); sizeof(abort_message_prefix)-1);
abort_message_prefix[sizeof(abort_message_prefix)-1] = 0; abort_message_prefix[sizeof(abort_message_prefix)-1] = 0;

View File

@ -2802,8 +2802,10 @@ typedef int (*burn_abort_handler_t)(void *handle, int signum, int flag);
Depending on mode it may cancel all drive operations, wait for all drives Depending on mode it may cancel all drive operations, wait for all drives
to become idle, exit(1). It may also prepare function to become idle, exit(1). It may also prepare function
burn_drive_get_status() for waiting and performing exit(1). burn_drive_get_status() for waiting and performing exit(1).
If text is not NULL then it is used as prefix for pacifier messages of If parameter handle may be NULL or a text that shall be used as prefix for
burn_abort_pacifier(). pacifier messages of burn_abort_pacifier(). Other than with an application
provided handler, the prefix char array does not have to be kept existing
until the eventual signal event.
Before version 0.7.8 only action 0 was available. I.e. the built-in handler Before version 0.7.8 only action 0 was available. I.e. the built-in handler
waited for the drives to become idle and then performed exit(1) directly. waited for the drives to become idle and then performed exit(1) directly.
But FreeBSD 8.0 sometimes pauses the other threads until the signal handler But FreeBSD 8.0 sometimes pauses the other threads until the signal handler