hadoop-yarn-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eric Yang (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (YARN-8207) Docker container launch use popen have risk of shell expansion
Date Tue, 08 May 2018 16:44:00 GMT

    [ https://issues.apache.org/jira/browse/YARN-8207?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16467673#comment-16467673

Eric Yang commented on YARN-8207:

{quote}At a bare minimum there should be a utility method, e.g: extract_execv_args(args* args){quote}
I agree to this point, and will do this.

{quote}Please create an init function, e.g.: init_args(args* args), or a macro to encapsulate
initialization of the structure.{quote}
Init_args is only assigning 0 to length.  I prefer to write it as:
struct args buffer = { 0 };

Instead of:

struct args *buffer = malloc(sizeof(args));

I understand the desire and obsession for code perfection, but I am trying to restrain myself
from making more mess in crunch time.

{quote}As add_to_args works today, the lack of a NULL check on the make_string result will
cause the program to crash. {quote}

Sorry, I thought I had a null check, but it was changed to length check.  This will be fixed.

{quote}would be safer and easier to understand written with strdup/strndup, e.g.:
              dst = strndup(values[i], tmp_ptr - values[i]);
              pattern = strdup(permitted_values[j] + 6);
This will be optimized.

{quote}make_string is still not checking for vsnprintf failure. If the first vsnprintf fails
and returns -1, the code will allocate a 0-byte buffer.{quote}

No, it doesn't malloc(-1) will return null instead of 0 bytes, the second check will not succeed.

> Docker container launch use popen have risk of shell expansion
> --------------------------------------------------------------
>                 Key: YARN-8207
>                 URL: https://issues.apache.org/jira/browse/YARN-8207
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: yarn-native-services
>    Affects Versions: 3.0.0, 3.1.0, 3.0.1, 3.0.2
>            Reporter: Eric Yang
>            Assignee: Eric Yang
>            Priority: Blocker
>              Labels: Docker
>         Attachments: YARN-8207.001.patch, YARN-8207.002.patch, YARN-8207.003.patch, YARN-8207.004.patch,
YARN-8207.005.patch, YARN-8207.006.patch, YARN-8207.007.patch, YARN-8207.008.patch
> Container-executor code utilize a string buffer to construct docker run command, and
pass the string buffer to popen for execution.  Popen spawn a shell to run the command.  Some
arguments for docker run are still vulnerable to shell expansion.  The possible solution is
to convert from char * buffer to string array for execv to avoid shell expansion.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail: yarn-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: yarn-issues-help@hadoop.apache.org

View raw message