Reviewed-by: Steven Dake <[email protected]>

Thanks!
-steve

On 12/22/2010 05:43 PM, Angus Salkeld wrote:
> If any sys call in memory_map() fails the failure currently gets ignored.
> Now we pass a CS_ERR_LIBRARY back to the client app.
> 
> Signed-off-by: Angus Salkeld <[email protected]>
> ---
>  exec/coroipcs.c |   22 +++++++++++++++++++++-
>  1 files changed, 21 insertions(+), 1 deletions(-)
> 
> diff --git a/exec/coroipcs.c b/exec/coroipcs.c
> index 0ca22d3..703802a 100644
> --- a/exec/coroipcs.c
> +++ b/exec/coroipcs.c
> @@ -1611,7 +1611,6 @@ int coroipcs_handler_dispatch (
>                       ipc_disconnect (conn_info);
>                       return (0);
>               }
> -             req_setup_send (conn_info, CS_OK);
>  
>  #if _POSIX_THREAD_PROCESS_SHARED < 1
>               conn_info->semkey = req_setup->semkey;
> @@ -1620,26 +1619,47 @@ int coroipcs_handler_dispatch (
>                       req_setup->control_file,
>                       req_setup->control_size,
>                       (void *)&conn_info->control_buffer);
> +             if (res == -1) {
> +                     goto send_setup_response;
> +             }
>               conn_info->control_size = req_setup->control_size;
>  
>               res = memory_map (
>                       req_setup->request_file,
>                       req_setup->request_size,
>                       (void *)&conn_info->request_buffer);
> +             if (res == -1) {
> +                     goto send_setup_response;
> +             }
>               conn_info->request_size = req_setup->request_size;
>  
>               res = memory_map (
>                       req_setup->response_file,
>                       req_setup->response_size,
>                       (void *)&conn_info->response_buffer);
> +             if (res == -1) {
> +                     goto send_setup_response;
> +             }
>               conn_info->response_size = req_setup->response_size;
>  
>               res = circular_memory_map (
>                       req_setup->dispatch_file,
>                       req_setup->dispatch_size,
>                       (void *)&conn_info->dispatch_buffer);
> +             if (res == -1) {
> +                     goto send_setup_response;
> +             }
>               conn_info->dispatch_size = req_setup->dispatch_size;
>  
> + send_setup_response:
> +             if (res == 0) {
> +                     req_setup_send (conn_info, CS_OK);
> +             } else {
> +                     req_setup_send (conn_info, CS_ERR_LIBRARY);
> +                     ipc_disconnect (conn_info);
> +                     return (0);
> +             }
> +
>               conn_info->service = req_setup->service;
>               conn_info->refcount = 0;
>               conn_info->setup_bytes_read = 0;

_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to