staging: tidspbridge/pmgr: additional checking after return from strlen_user

strlen_user will return the length including final NUL.
    and will return 0 if failed (for example: if user string not NUL terminated)

  so need check whether it is an invalid parameter.

addtional info:
  can reference the comments of strlen_user in lib/strnlen_user.c

Signed-off-by: Chen Gang <gang.chen@asianux.com>
Cc: Omar Ramirez Luna <omar.ramirez@copitl.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Chen Gang 2013-01-21 17:33:26 +08:00 committed by Greg Kroah-Hartman
parent cdbbc618f8
commit ec7e0aef31
1 changed files with 6 additions and 3 deletions

View File

@ -414,10 +414,13 @@ u32 mgrwrap_register_object(union trapped_args *args, void *pr_ctxt)
CP_FM_USR(&uuid_obj, args->args_mgr_registerobject.uuid_obj, status, 1); CP_FM_USR(&uuid_obj, args->args_mgr_registerobject.uuid_obj, status, 1);
if (status) if (status)
goto func_end; goto func_end;
/* path_size is increased by 1 to accommodate NULL */
path_size = strlen_user((char *) path_size = strlen_user((char *)
args->args_mgr_registerobject.sz_path_name) + args->args_mgr_registerobject.sz_path_name);
1; if (!path_size) {
status = -EINVAL;
goto func_end;
}
psz_path_name = kmalloc(path_size, GFP_KERNEL); psz_path_name = kmalloc(path_size, GFP_KERNEL);
if (!psz_path_name) { if (!psz_path_name) {
status = -ENOMEM; status = -ENOMEM;