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

Commit 7e6683ce authored by Josh Gao's avatar Josh Gao
Browse files

Increase the maximum shell command length to 4096ish.

The actual maximum length will depend on the version of the shell
protocol being used, and any additional parameters being passed through
(e.g. TERM=xterm-256color). This should be able to be raised to 64K for
devices with commit 3d2904cd (L-MR1 and above), but that'll require some
plumbing.

Bug: http://b/20467103
Change-Id: Idf0c46af5b18b854110aba58df13a53297d2475f
parent a590596d
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -857,8 +857,7 @@ int handle_forward_request(const char* service, TransportType type, const char*
#if ADB_HOST
        SendOkay(reply_fd);
#endif
        SendProtocolString(reply_fd, listeners);
        return 1;
        return SendProtocolString(reply_fd, listeners);
    }

    if (!strcmp(service, "killforward-all")) {
+1 −1
Original line number Diff line number Diff line
@@ -124,7 +124,7 @@ bool adb_status(int fd, std::string* error) {

int _adb_connect(const std::string& service, std::string* error) {
    D("_adb_connect: %s", service.c_str());
    if (service.empty() || service.size() > 1024) {
    if (service.empty() || service.size() > MAX_PAYLOAD_V1) {
        *error = android::base::StringPrintf("bad service name length (%zd)",
                                             service.size());
        return -1;
+5 −3
Original line number Diff line number Diff line
@@ -22,14 +22,16 @@

#include <android-base/stringprintf.h>

#include "adb.h"
#include "adb_trace.h"
#include "adb_utils.h"
#include "sysdeps.h"

bool SendProtocolString(int fd, const std::string& s) {
    int length = s.size();
    if (length > 0xffff) {
        length = 0xffff;
    unsigned int length = s.size();
    if (length > MAX_PAYLOAD_V1 - 4) {
        errno = EMSGSIZE;
        return false;
    }

    // The cost of sending two strings outweighs the cost of formatting.
+3 −3
Original line number Diff line number Diff line
@@ -702,7 +702,7 @@ static int smart_socket_enqueue(asocket *s, apacket *p)
    if(p->len < 4) return 0;

    len = unhex(p->data, 4);
    if((len < 1) ||  (len > 1024)) {
    if ((len < 1) || (len > MAX_PAYLOAD_V1)) {
        D("SS(%d): bad size (%d)", s->id, len);
        goto fail;
    }