All of lore.kernel.org
 help / color / mirror / Atom feed
* libselinux APIs should take "const" qualifier?
@ 2010-03-19  7:52 KaiGai Kohei
  2010-03-19 13:32 ` Stephen Smalley
  0 siblings, 1 reply; 6+ messages in thread
From: KaiGai Kohei @ 2010-03-19  7:52 UTC (permalink / raw)
  To: SELinux

Right now, security_context_t is an alias of char *, declared in selinux.h.

Various kind of libselinux API takes security_context_t arguments,
however, it is inconvenience in several situations.

For example, the following query is parsed, then delivered to access
control subsystem with the security context as "const char *" cstring.

  ALTER TABLE my_tbl SECURITY LABEL TO 'system_u:object_r:sepgsql_table_t:SystemHigh';
                const char *  <----    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

In this case, we want to call selinux_trans_to_raw_context() to translate
the given security context into raw format. But it takes security_context_t
argument for the source context, although this pointer is read-only.
In the result, compiler raises warnings because we gave "const char *" pointer
into functions which take security_context_t (= char *).

Any comments?

It seems to me the following functions' prototype should be qualified by
"const".

extern int setcon(*const* security_context_t con);
extern int setexeccon(*const* security_context_t con);
extern int setfscreatecon(*const* security_context_t context);
extern int setkeycreatecon(*const* security_context_t context);
extern int setsockcreatecon(*const* security_context_t context);

extern int security_compute_av(*const* security_context_t scon,
                               *const* security_context_t tcon,
                               security_class_t tclass,
                               access_vector_t requested,
                               struct av_decision *avd);
extern int security_compute_av_flags(*const* security_context_t scon,
                                     *const* security_context_t tcon,
                                     security_class_t tclass,
                                     access_vector_t requested,
                                     struct av_decision *avd);
extern int security_compute_create(*const* security_context_t scon,
                                   *const* security_context_t tcon,
                                   security_class_t tclass,
                                   security_context_t * newcon);
extern int security_compute_relabel(*const* security_context_t scon,
                                    *const* security_context_t tcon,
                                    security_class_t tclass,
                                    security_context_t * newcon);
extern int security_compute_member(*const* security_context_t scon,
                                   *const* security_context_t tcon,
                                   security_class_t tclass,
                                   security_context_t * newcon);
extern int security_compute_user(*const* security_context_t scon,
                                 const char *username,
                                 security_context_t ** con);
extern int security_check_context(*const* security_context_t con);
extern int security_canonicalize_context(*const* security_context_t con,
                                         security_context_t * canoncon);
 ... and all the _raw version.

extern int selinux_trans_to_raw_context(*const* security_context_t trans,
                                        security_context_t * rawp);
extern int selinux_raw_to_trans_context(*const* security_context_t raw,
                                        security_context_t * transp);

-- 
KaiGai Kohei <kaigai@ak.jp.nec.com>

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2010-06-14 20:37 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-19  7:52 libselinux APIs should take "const" qualifier? KaiGai Kohei
2010-03-19 13:32 ` Stephen Smalley
2010-03-23  2:56   ` KaiGai Kohei
2010-06-11  6:35     ` KaiGai Kohei
2010-06-14 13:50       ` Steve Lawrence
2010-06-14 20:37     ` Chad Sellers

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.