diff options
Diffstat (limited to 'packages/gsm')
-rw-r--r-- | packages/gsm/files/fix-mlbuf.patch | 50 | ||||
-rw-r--r-- | packages/gsm/libgsmd_svn.bb | 10 |
2 files changed, 60 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; + } + diff --git a/packages/gsm/libgsmd_svn.bb b/packages/gsm/libgsmd_svn.bb index c715092b8d..4f6fe12766 100644 --- a/packages/gsm/libgsmd_svn.bb +++ b/packages/gsm/libgsmd_svn.bb @@ -9,6 +9,7 @@ PR = "r19" SRC_URI_OVERRIDES_PACKAGE_ARCH = "1" SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gsm;proto=http \ + file://fix-mlbuf.patch;patch=1 \ file://gsmd \ file://default" S = "${WORKDIR}/gsm" @@ -27,6 +28,15 @@ do_install_append() { install -m 0755 ${WORKDIR}/gsmd ${D}/${sysconfdir}/init.d/ install -d ${D}/${sysconfdir}/default install ${WORKDIR}/default ${D}/${sysconfdir}/default/gsmd + # band-aid: + install -d ${D}${includedir}/common + install -m 0644 ${S}/include/common/linux_list.h ${D}${includedir}/common +} + +# band-aid: +do_stage_append () { + install -d ${STAGING_INCDIR}/common + install ${S}/include/common/linux_list.h ${STAGING_INCDIR}/common } PACKAGES =+ "${PN}-tools gsmd gsmd-plugins \ |