[PATCH] [Server]: ensure we set proper errors when getting a NULL fd out of a handle
Eric Pouech
eric.pouech at orange.fr
Thu Sep 16 14:05:26 CDT 2010
(would hang for example server_get_unix_fd when an improper handle was passed, as no error
was returned from server call)
Fix for #24394.
A+
---
server/console.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/server/console.c b/server/console.c
index 6616bd2..957e35f 100644
--- a/server/console.c
+++ b/server/console.c
@@ -193,7 +193,10 @@ static struct fd *console_input_get_fd( struct object* obj )
{
struct console_input *console_input = (struct console_input*)obj;
assert( obj->ops == &console_input_ops );
- return console_input->fd ? (struct fd*)grab_object( console_input->fd ) : NULL;
+ if (console_input->fd)
+ return (struct fd*)grab_object( console_input->fd );
+ set_error( STATUS_OBJECT_TYPE_MISMATCH );
+ return NULL;
}
static enum server_fd_type console_get_fd_type( struct fd *fd )
@@ -1144,7 +1147,10 @@ static struct fd *screen_buffer_get_fd( struct object *obj )
{
struct screen_buffer *screen_buffer = (struct screen_buffer*)obj;
assert( obj->ops == &screen_buffer_ops );
- return screen_buffer->fd ? (struct fd*)grab_object( screen_buffer->fd ) : NULL;
+ if (screen_buffer->fd)
+ return (struct fd*)grab_object( screen_buffer->fd );
+ set_error( STATUS_OBJECT_TYPE_MISMATCH );
+ return NULL;
}
/* write data into a screen buffer */
More information about the wine-patches
mailing list