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

Commit b7806433 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "adb: increase the shell command length limit." into oc-dr1-dev

parents e1519ba2 34abac7d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -125,7 +125,7 @@ bool adb_status(int fd, std::string* error) {

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

bool SendProtocolString(int fd, const std::string& s) {
    unsigned int length = s.size();
    if (length > MAX_PAYLOAD_V1 - 4) {
    if (length > MAX_PAYLOAD - 4) {
        errno = EMSGSIZE;
        return false;
    }
+7 −0
Original line number Diff line number Diff line
@@ -599,6 +599,13 @@ static int RemoteShell(bool use_shell_protocol, const std::string& type_arg,
    std::string service_string = ShellServiceString(use_shell_protocol,
                                                    type_arg, command);

    // Old devices can't handle a service string that's longer than MAX_PAYLOAD_V1.
    // Use |use_shell_protocol| to determine whether to allow a command longer than that.
    if (service_string.size() > MAX_PAYLOAD_V1 && !use_shell_protocol) {
        fprintf(stderr, "error: shell command too long\n");
        return 1;
    }

    // Make local stdin raw if the device allocates a PTY, which happens if:
    //   1. We are explicitly asking for a PTY shell, or
    //   2. We don't specify shell type and are starting an interactive session.
+1 −1
Original line number Diff line number Diff line
@@ -686,7 +686,7 @@ static int smart_socket_enqueue(asocket* s, apacket* p) {
    }

    len = unhex(p->data, 4);
    if ((len < 1) || (len > MAX_PAYLOAD_V1)) {
    if ((len < 1) || (len > MAX_PAYLOAD)) {
        D("SS(%d): bad size (%d)", s->id, len);
        goto fail;
    }
+7 −0
Original line number Diff line number Diff line
@@ -342,6 +342,13 @@ class ShellTest(DeviceTest):
        out = self.device.shell(['echo', 'foo'])[0]
        self.assertEqual(out, 'foo' + self.device.linesep)

    def test_shell_command_length(self):
        # Devices that have shell_v2 should be able to handle long commands.
        if self.device.has_shell_protocol():
            rc, out, err = self.device.shell_nocheck(['echo', 'x' * 16384])
            self.assertEqual(rc, 0)
            self.assertTrue(out == ('x' * 16384 + '\n'))

    def test_shell_nocheck_failure(self):
        rc, out, _ = self.device.shell_nocheck(['false'])
        self.assertNotEqual(rc, 0)