Skip to content

Commit

Permalink
protocol: fix incorrect uv_close usage
Browse files Browse the repository at this point in the history
  • Loading branch information
tsl0922 committed Dec 27, 2020
1 parent 75c9004 commit 5650606
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 3 deletions.
9 changes: 6 additions & 3 deletions src/protocol.c
Expand Up @@ -87,9 +87,14 @@ static bool check_host_origin(struct lws *wsi) {
return len > 0 && strcasecmp(buf, host_buf) == 0;
}

static void close_cb(uv_handle_t *handle) {
struct pty_proc *proc = container_of((uv_pipe_t *)handle, struct pty_proc, pipe);
free(proc);
}

static void pty_proc_free(struct pty_proc *proc) {
uv_read_stop((uv_stream_t *)&proc->pipe);
uv_close((uv_handle_t *)&proc->pipe, NULL);
uv_close((uv_handle_t *)&proc->pipe, close_cb);

close(proc->pty);

Expand All @@ -101,8 +106,6 @@ static void pty_proc_free(struct pty_proc *proc) {
for (int i = 0; i < proc->argc; i++) {
free(proc->args[i]);
}

free(proc);
}

static void alloc_cb(uv_handle_t *handle, size_t suggested_size, uv_buf_t *buf) {
Expand Down
6 changes: 6 additions & 0 deletions src/utils.h
@@ -1,6 +1,12 @@
#ifndef TTYD_UTIL_H
#define TTYD_UTIL_H

#define container_of(ptr, type, member) \
({ \
const typeof(((type *)0)->member) *__mptr = (ptr); \
(type *)((char *)__mptr - offsetof(type, member)); \
})

// malloc with NULL check
void *xmalloc(size_t size);

Expand Down

0 comments on commit 5650606

Please sign in to comment.