Commit cdad7fcd authored by Thomas Schmitt's avatar Thomas Schmitt

Prevented potential memory fault with burn_set_signal_handling()

parent ed6e2df8
#define Cdrskin_timestamP "2010.03.07.081704" #define Cdrskin_timestamP "2010.03.08.092608"
...@@ -490,7 +490,8 @@ void burn_set_signal_handling(void *handle, burn_abort_handler_t handler, ...@@ -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;
......
...@@ -2802,8 +2802,10 @@ typedef int (*burn_abort_handler_t)(void *handle, int signum, int flag); ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment