PERFORCE change 92917 for review
Todd Miller
millert at FreeBSD.org
Tue Mar 7 08:39:59 PST 2006
http://perforce.freebsd.org/chv.cgi?CH=92917
Change 92917 by millert at millert_ibook on 2006/03/07 16:39:26
Convert mach_get_task_label() and mach_get_task_label_text()
to take ipc_space_t not task_t and add sanity check for
space being IS_NULL. Fixes a panic when the port passed
in is not a task port.
Affected files ...
.. //depot/projects/trustedbsd/sedarwin7/src/darwin/xnu/osfmk/kern/security.c#6 edit
.. //depot/projects/trustedbsd/sedarwin7/src/darwin/xnu/osfmk/mach/security.defs#7 edit
Differences ...
==== //depot/projects/trustedbsd/sedarwin7/src/darwin/xnu/osfmk/kern/security.c#6 (text+ko) ====
@@ -32,13 +32,16 @@
kern_return_t
mach_get_task_label(
- task_t t,
+ ipc_space_t space,
mach_port_name_t *outlabel)
{
- ipc_labelh_t lh = t->label;
- ipc_space_t space = t->itk_space;
kern_return_t kr;
+ ipc_labelh_t lh;
+
+ if (space == IS_NULL || space->is_task == NULL)
+ return KERN_INVALID_TASK;
+ lh = space->is_task->label;
ip_lock(lh->lh_port);
lh->lh_port->ip_mscount++;
lh->lh_port->ip_srights++;
@@ -55,16 +58,21 @@
return (KERN_SUCCESS);
}
+kern_return_t
-kern_return_t
mach_get_task_label_text(
- task_t t,
+ ipc_space_t space,
labelstr_t policies,
labelstr_t outl)
{
- tasklabel_lock(t);
- mac_externalize_task_label(&t->maclabel, policies, outl, 512, 0);
- tasklabel_unlock(t);
+
+ if (space == IS_NULL)
+ return KERN_INVALID_TASK;
+
+ tasklabel_lock(space->is_task);
+ mac_externalize_task_label(&space->is_task->maclabel, policies, outl,
+ 512, 0);
+ tasklabel_unlock(space->is_task);
return KERN_SUCCESS;
}
==== //depot/projects/trustedbsd/sedarwin7/src/darwin/xnu/osfmk/mach/security.defs#7 (text+ko) ====
@@ -23,7 +23,7 @@
@return Standard MiG return values (0 for success)
*/
-routine mach_get_task_label(task : task_t;
+routine mach_get_task_label(task : ipc_space_t;
out label : mach_port_name_t);
/**
@@ -38,7 +38,7 @@
@return Standard MiG return values (0 for success)
*/
-routine mach_get_task_label_text(task : task_t;
+routine mach_get_task_label_text(task : ipc_space_t;
policies : labelstr_t;
out label : labelstr_t);
More information about the trustedbsd-cvs
mailing list