All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sven Vermeulen <sven.vermeulen@siphos.be>
To: selinux@tycho.nsa.gov
Subject: Proper use of get_default_context
Date: Sun, 11 Dec 2011 17:51:53 +0100	[thread overview]
Message-ID: <20111211165153.GA18954@siphos.be> (raw)

Hi all,

I'm trying to debug a (less important) case of SSHd segfaulting when the
user is running in permissive mode but has a wrongly labeled system,
resulting in the sshd binary running in the kernel_t context. It looks like
this causes a double-free (or something similar) [1] in the code and I'm
trying to figure out how to best deal with this.

[1] https://bugs.gentoo.org/show_bug.cgi?id=377203

>From the looks of it, I think it boils down to get_default_context which
returns -1 (as expected) but either leaves the security_context_t as-is or
makes it NULL.

 98 int get_default_context(const char *user,
 99                         security_context_t fromcon, security_context_t * newcon)
100 {
101         security_context_t *conary;
102         int rc;
103 
104         rc = get_ordered_context_list(user, fromcon, &conary);
105         if (rc <= 0)
106                 return -1;
107 
108         *newcon = strdup(conary[0]);
109         freeconary(conary);
110         if (!(*newcon))
111                 return -1;
112         return 0;
113 }

Am I correct to state that, if the newcon variable was not set to a valid
security_context_t before, then I can just set newcon to NULL?

Like in OpenSSH's ssh_selinux_getctxbyname:

  static security_context_t ssh_selinux_getctxbyname(char *pwname) {
    security_context_t sc;
    ...
    r = get_default_context(pwname, NULL, &sc);

    return(sc);
  }

I think the above might be updated with:

  if (r != -1)
    return(sc);
  else
    return(NULL);

Otherwise a later call tries to freecon(sc) which then fails (in case of
OpenSSH, that's in ssh_selinux_setup_exec_context()).

Am I making sense here?

Wkr,
	Sven Vermeulen

--
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.

             reply	other threads:[~2011-12-11 16:53 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-11 16:51 Sven Vermeulen [this message]
2011-12-12 14:35 ` Proper use of get_default_context Stephen Smalley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20111211165153.GA18954@siphos.be \
    --to=sven.vermeulen@siphos.be \
    --cc=selinux@tycho.nsa.gov \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.