/* Do not remove the headers from this file! see /USAGE for more info. */
#pragma save_types
#include <security.h>
#include <driver/origin.h>
private nosave mixed privilege;
private nosave mixed unguarded_privilege;
private nosave mixed *security_handle;
nomask protected void set_privilege(mixed priv)
{
if (origin() != ORIGIN_LOCAL)
return;
if (file_name(this_object())==SECURE_D)
{
privilege = priv;
return;
}
if (!SECURE_D->valid_privilege(priv))
return;
privilege =
SECURE_D->reduced_privilege(priv,SECURE_D->query_protection(this_object(),1));
}
nomask mixed query_privilege()
{
return privilege;
}
nomask mixed query_unguarded_privilege()
{
return unguarded_privilege;
}
nomask int verify_privilege_granted(mixed *handle)
{
return security_handle == handle;
}
nomask varargs protected mixed unguarded(mixed priv,function code)
{
if (origin() != ORIGIN_LOCAL)
return 0;
unguarded_privilege = priv;
return SECURE_D->call_unguarded(code,security_handle=allocate(1));
}
/* Do not remove the headers from this file! see /USAGE for more info. */