127a128
> #include <cstdint>
371,372c372,373
< uint8_t
< BaseRemoteGDB::getbyte()
---
> bool
> BaseRemoteGDB::getbyte(uint8_t &b)
374,377c375,381
< uint8_t b;
< if (::read(fd, &b, 1) != 1)
< warn("could not read byte from debugger");
< return b;
---
> if (::read(fd, &b, sizeof(b)) == sizeof(b)) {
> return true;
> } else {
> warn("Couldn't read data from debugger, detaching.");
> detach();
> return false;
> }
380c384
< void
---
> bool
383,384c387,393
< if (::write(fd, &b, 1) != 1)
< warn("could not write byte to debugger");
---
> if (::write(fd, &b, sizeof(b)) == sizeof(b)) {
> return true;
> } else {
> warn("Couldn't write data to the debugger, detaching.");
> detach();
> return false;
> }
388c397
< void
---
> ssize_t
399c408,409
< putbyte(GDBStart);
---
> if (!putbyte(GDBStart))
> return -1;
402c412,413
< putbyte(c);
---
> if (!putbyte(c))
> return -1;
405,412c416,428
< //Send the ending character.
< putbyte(GDBEnd);
< //Sent the checksum.
< putbyte(i2digit(csum >> 4));
< putbyte(i2digit(csum));
< //Try transmitting over and over again until the other end doesn't send an
< //error back.
< } while ((c = getbyte() & 0x7f) == GDBBadP);
---
> if (//Send the ending character.
> !putbyte(GDBEnd) ||
> //Sent the checksum.
> !putbyte(i2digit(csum >> 4)) ||
> !putbyte(i2digit(csum))) {
> return -1;
> }
> //Try transmitting over and over again until the other end doesn't
> //send an error back.
> if (!getbyte(c))
> return -1;
> } while ((c & 0x7f) == GDBBadP);
> return 0;
420c436,437
< int c, csum;
---
> uint8_t c;
> int csum;
427,428c444,447
< while ((c = getbyte()) != GDBStart)
< ;
---
> do {
> if (!getbyte(c))
> return -1;
> } while (c != GDBStart);
432c451,455
< while ((c = getbyte()) != GDBEnd && len < maxlen) {
---
> while (len < maxlen) {
> if (!getbyte(c))
> return -1;
> if (c == GDBEnd)
> break;
445c468,469
< putbyte(GDBBadP);
---
> if (!putbyte(GDBBadP))
> return -1;
450,451c474,478
< csum -= digit2i(getbyte()) * 16;
< csum -= digit2i(getbyte());
---
> uint8_t csum1, csum2;
> if (!getbyte(csum1) || !getbyte(csum2))
> return -1;
> csum -= digit2i(csum1) * 16;
> csum -= digit2i(csum2);
456c483,484
< putbyte(GDBGoodP);
---
> if (!putbyte(GDBGoodP))
> return -1;
459,460c487,488
< putbyte(bp[0]);
< putbyte(bp[1]);
---
> if (!putbyte(bp[0]) || !putbyte(bp[1]))
> return -1;
467c495,496
< putbyte(GDBBadP);
---
> if (!putbyte(GDBBadP))
> return -1;
701d729
< char *buffer;
714c742,743
< buffer = (char*)malloc(bufferSize);
---
> unique_ptr<char[]> buffer_mem(new char[bufferSize]);
> char *buffer = buffer_mem.get();
735c764,765
< send(buffer);
---
> if (send(buffer) < 0)
> return true;
742c772,775
< datalen = recv(data, sizeof(data));
---
> int recved = recv(data, sizeof(data));
> if (recved < 0)
> return true;
> datalen = recved;
755c788,789
< send(buffer);
---
> if (send(buffer) < 0)
> return true;
763c797,798
< send(buffer);
---
> if (send(buffer) < 0)
> return true;
768,770c803,806
< if (p == NULL || *p != '\0')
< send("E01");
< else {
---
> if (p == NULL || *p != '\0') {
> if (send("E01") < 0)
> return true;
> } else {
772c808,809
< send("OK");
---
> if (send("OK") < 0)
> return true;
779c816,817
< send("E02");
---
> if (send("E02") < 0)
> return true;
784c822,823
< send("E03");
---
> if (send("E03") < 0)
> return true;
788c827,828
< send("E04");
---
> if (send("E04") < 0)
> return true;
792c832,833
< send("E05");
---
> if (send("E05") < 0)
> return true;
801c842,845
< send(temp);
---
> if (send(temp) < 0) {
> delete [] temp;
> return true;
> }
804c848,849
< send("E05");
---
> if (send("E05") < 0)
> return true;
811c856,857
< send("E06");
---
> if (send("E06") < 0)
> return true;
816c862,863
< send("E07");
---
> if (send("E07") < 0)
> return true;
820c867,868
< send("E08");
---
> if (send("E08") < 0)
> return true;
825c873,874
< send("E09");
---
> if (send("E09") < 0)
> return true;
829c878,879
< send("E0A");
---
> if (send("E0A") < 0)
> return true;
832,835c882,888
< if (write(val, (size_t)len, buffer))
< send("OK");
< else
< send("E0B");
---
> if (write(val, (size_t)len, buffer)) {
> if (send("OK") < 0)
> return true;
> } else {
> if (send("E0B") < 0)
> return true;
> }
841,844c894,900
< if (val == 0)
< send("OK");
< else
< send("E01");
---
> if (val == 0) {
> if (send("OK") < 0)
> return true;
> } else {
> if (send("E01") < 0)
> return true;
> }
852c908
< goto out;
---
> return true;
861c917
< goto out;
---
> return true;
869c925
< goto out;
---
> return true;
878c934
< goto out;
---
> return true;
886c942
< goto out;
---
> return true;
890c946,947
< if (*p++ != ',') send("E0D");
---
> if (*p++ != ',' && send("E0D") < 0)
> return true;
892c949,950
< if (*p++ != ',') send("E0D");
---
> if (*p++ != ',' && send("E0D") < 0)
> return true;
913c971,972
< send("");
---
> if (send("") < 0)
> return true;
917c976,977
< send(ret ? "OK" : "E0C");
---
> if (send(ret ? "OK" : "E0C") < 0)
> return true;
922c982,983
< if (*p++ != ',') send("E0D");
---
> if (*p++ != ',' && send("E0D") < 0)
> return true;
924c985,986
< if (*p++ != ',') send("E0D");
---
> if (*p++ != ',' && send("E0D") < 0)
> return true;
945c1007,1008
< send("");
---
> if (send("") < 0)
> return true;
949c1012,1013
< send(ret ? "OK" : "E0C");
---
> if (send(ret ? "OK" : "E0C") < 0)
> return true;
954,957c1018,1024
< if (var == "C")
< send("QC0");
< else
< send("");
---
> if (var == "C") {
> if (send("QC0") < 0)
> return true;
> } else {
> if (send("") < 0)
> return true;
> }
975c1042,1043
< send("");
---
> if (send("") < 0)
> return true;
982c1050,1051
< send("");
---
> if (send("") < 0)
> return true;
989,990d1057
< out:
< free(buffer);