Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5056eab7 authored by David Ng's avatar David Ng Committed by Ricardo Cerqueira
Browse files

init: Add support for properties expansion in exec command

Add Android properties expansion to 'exec' arguments.
E.g.  exec /system/bin/log ${sys.usb.config}

CRs-Fixed: 390942
Change-Id: Ie520396d951e578bd9f591734a45d2f460b8f51d
parent d23a32d1
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -264,6 +264,8 @@ int do_exec(int nargs, char **args)
    pid_t pid;
    int status, i, j;
    char *par[MAX_PARAMETERS];
    char prop_val[PROP_VALUE_MAX];
    int len;

    if (nargs > MAX_PARAMETERS)
    {
@@ -272,6 +274,23 @@ int do_exec(int nargs, char **args)

    for(i=0, j=1; i<(nargs-1) ;i++,j++)
    {
        if ((args[j])
            &&
            (!expand_props(prop_val, args[j], sizeof(prop_val))))

        {
            len = strlen(args[j]);
            if (strlen(prop_val) <= len) {
                /* Overwrite arg with expansion.
                 *
                 * For now, only allow an expansion length that
                 * can fit within the original arg length to
                 * avoid extra allocations.
                 * On failure, use original argument.
                 */
                strncpy(args[j], prop_val, len + 1);
            }
        }
        par[i] = args[j];
    }