diff options
author | Philipp Zabel <philipp.zabel@gmail.com> | 2007-08-20 17:45:29 +0000 |
---|---|---|
committer | Philipp Zabel <philipp.zabel@gmail.com> | 2007-08-20 17:45:29 +0000 |
commit | 4f73b29c2b66b6d55caf55eccd59caa766086fa4 (patch) | |
tree | 9cd77f33a7c44578555b409d5368d34eccda41ec /packages/gsm/files | |
parent | 9c6fe0eb6939836dd5c84e37d93d6c32c31dd27c (diff) |
libgsmd: band-aid. stage common/linux_list.h and fix up the mlbuf
changes until this is repaired upstream
Diffstat (limited to 'packages/gsm/files')
-rw-r--r-- | packages/gsm/files/fix-mlbuf.patch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/packages/gsm/files/fix-mlbuf.patch b/packages/gsm/files/fix-mlbuf.patch new file mode 100644 index 0000000000..ed4aa2519d --- /dev/null +++ b/packages/gsm/files/fix-mlbuf.patch @@ -0,0 +1,50 @@ +Index: gsm/src/gsmd/atcmd.c +=================================================================== +--- gsm/src/gsmd/atcmd.c (revision 2745) ++++ gsm/src/gsmd/atcmd.c (working copy) +@@ -370,8 +370,8 @@ + if (g->mlbuf_len) + g->mlbuf[g->mlbuf_len ++] = '\n'; + DEBUGP("Appending buf to mlbuf\n"); +- if (len > sizeof(g->mlbuf) - g->mlbuf_len) +- len = sizeof(g->mlbuf) - g->mlbuf_len; ++ if (len > MLPARSE_BUF_SIZE - g->mlbuf_len) ++ len = MLPARSE_BUF_SIZE - g->mlbuf_len; + memcpy(g->mlbuf + g->mlbuf_len, buf, len); + g->mlbuf_len += len; + +@@ -470,7 +470,7 @@ + if (cr) + len = cr - pos->cur; + else +- len = pos->buflen; ++ len = pos->buflen - 1; /* assuming zero-terminated strings */ + rc = write(fd, pos->cur, len); + if (rc == 0) { + gsmd_log(GSMD_ERROR, "write returns 0, aborting\n"); +@@ -480,8 +480,8 @@ + fd, rc); + return rc; + } +- if (cr && rc == len) +- rc ++; /* Skip the \n */ ++ if (!cr || rc == len) ++ rc ++; /* Skip the \n or \0 */ + pos->buflen -= rc; + pos->cur += rc; + write(fd, "\r", 1); +Index: gsm/src/gsmd/gsmd.c +=================================================================== +--- gsm/src/gsmd/gsmd.c (revision 2745) ++++ gsm/src/gsmd/gsmd.c (working copy) +@@ -301,6 +301,10 @@ + { + INIT_LLIST_HEAD(&g->users); + ++ g->mlbuf = talloc_array(gsmd_tallocs, unsigned char, MLPARSE_BUF_SIZE); ++ if (!g->mlbuf) ++ return -ENOMEM; ++ + return 0; + } + |