if (sub1 == NULL) {
continue;
}
- sub1 = strstr(sub1, "[")+1;
+ sub1 = strstr(sub1, "[");
if (sub1 == NULL) {
continue;
+ } else {
+ sub1++;
}
sub2 = strstr(sub1, "]");
if (sub2 == NULL) {
D( "inoti read failed\n");
goto done;
}
- while (i >= 0 && i <= (length - EVENT_SIZE)) {
+ int payload = length >= EVENT_SIZE ? length - EVENT_SIZE : 0;
+ while (i >= 0 && i <= payload) {
struct inotify_event *event = (struct inotify_event *) &buffer[i];
if (event->len) {
if (event->mask & IN_CREATE) {
while(avail > 0) {
r = sdb_read(fd, x, avail);
D("LS(%d): post sdb_read(fd=%d,...) r=%d (errno=%d) avail=%d\n", s->id, s->fd, r, r<0?errno:0, avail);
- if(r > 0) {
+ if(r > 0 && r <= avail) {
avail -= r;
x += r;
continue;
D("LS(%d): fd=%d post avail loop. r=%d is_eof=%d forced_eof=%d\n",
s->id, s->fd, r, is_eof, s->fde.force_eof);
-#ifdef SUPPORT_ENCRYPT
//변경된 최대 패킷 크기로 코드 수정
if((avail == max_payload) || (s->peer == 0)) {
- put_apacket(p);
- } else {
- p->len = max_payload - avail;
-#else
- if((avail == max_payload) || (s->peer == 0)) {
put_apacket(p);
} else {
- p->len = max_payload - avail;
-#endif
+ p->len = max_payload >= avail ? max_payload - avail : 0;
r = s->peer->enqueue(s->peer, p);
D("LS(%d): fd=%d post peer->enqueue(). r=%d\n", s->id, s->fd, r);
size_t len = sizeof(*m);
int r;
- while(len > 0) {
+ while (len > 0) {
r = sdb_read(fd, p, len);
- if(r > 0) {
+ if (r > 0 && r <= len) {
len -= r;
p += r;
} else {
D("readx: fd=%d wanted=%d\n", fd, len);
while(len > 0) {
r = sdb_read(fd, p, len);
- if(r > 0) {
+ if(r > 0 && r <= len) {
len -= r;
p += r;
} else {