diff options
author | Chia-chi Yeh <chiachi@android.com> | 2009-12-15 03:53:47 +0800 |
---|---|---|
committer | Chia-chi Yeh <chiachi@android.com> | 2009-12-15 07:15:15 +0800 |
commit | 4a721df13a07ca36daafbb3785653979e3d1d393 (patch) | |
tree | f648558d9b1cb4f4366e16ee782c1f907024e365 | |
parent | 58c35fd8e8d71912c64cb55d6e27df50dde65f76 (diff) | |
download | mtpd-4a721df13a07ca36daafbb3785653979e3d1d393.tar.gz |
Use environment variables to pass information to pppd.android-sdk-2.1_r1android-2.1_r2.1sandroid-2.1_r2.1p2android-2.1_r2.1pandroid-2.1_r2android-2.1_r1eclair-sholes-release2eclair-releaseeclair-passion-release
Bug: 2325838
Change-Id: Ibc8b85ebd855270f39c7b7724fd0735528f80622
-rw-r--r-- | mtpd.c | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -337,6 +337,24 @@ void start_pppd(int pppox) memcpy(&args[4], pppd_argv, sizeof(char *) * pppd_argc); args[4 + pppd_argc] = NULL; +#ifdef ANDROID_CHANGES + { + char envargs[65536]; + char *tail = envargs; + int i; + /* Hex encode the arguments using [A-P] instead of [0-9A-F]. */ + for (i = 0; args[i]; ++i) { + char *p = args[i]; + do { + *tail++ = 'A' + ((*p >> 4) & 0x0F); + *tail++ = 'A' + (*p & 0x0F); + } while (*p++); + } + *tail = 0; + setenv("envargs", envargs, 1); + args[1] = NULL; + } +#endif execvp("pppd", args); log_print(FATAL, "Exec() %s", strerror(errno)); exit(1); /* Pretending a fatal error in pppd. */ |