73 lines
2.3 KiB
Diff
73 lines
2.3 KiB
Diff
http://bugzilla.openmoko.org/cgi-bin/bugzilla/show_bug.cgi?id=834
|
|
|
|
From: Kristian Mueller <kristian@mput.de>
|
|
Subject: [PATCH] libgsmd-tool does not allow sms with more than one word
|
|
|
|
libgsmd-tool only allows for command strings without spaces.
|
|
SMS messages with more than one word will be parsed as multible commands.
|
|
The patch introduces SMS message text in bracket and fixes a NULL pointer
|
|
reference on mailformed "ss" commands.
|
|
|
|
Signed-off-by: Jim Huang <jserv@openmoko.org>
|
|
|
|
Upstream-Status: Inappropriate [not used]
|
|
---
|
|
src/util/shell.c | 32 ++++++++++++++++++++++++++------
|
|
1 file changed, 26 insertions(+), 6 deletions(-)
|
|
|
|
Index: gsm/src/util/shell.c
|
|
===================================================================
|
|
--- gsm.orig/src/util/shell.c 2007-08-31 16:15:30.000000000 +0800
|
|
+++ gsm/src/util/shell.c 2007-09-17 23:35:31.000000000 +0800
|
|
@@ -389,7 +389,7 @@
|
|
"\tsd\tSMS Delete (sd=index,delflg)\n"
|
|
"\tsl\tSMS List (sl=stat)\n"
|
|
"\tsr\tSMS Read (sr=index)\n"
|
|
- "\tss\tSMS Send (ss=number,text)\n"
|
|
+ "\tss\tSMS Send (ss=number,text|[\"text\"])\n"
|
|
"\tsw\tSMS Write (sw=stat,number,text)\n"
|
|
"\tsm\tSMS Storage stats\n"
|
|
"\tsM\tSMS Set preferred storage (sM=mem1,mem2,mem3)\n"
|
|
@@ -612,16 +612,36 @@
|
|
|
|
lgsm_sms_read(lgsmh, atoi(ptr+1));
|
|
} else if ( !strncmp(buf, "ss", 2)) {
|
|
- printf("Send SMS\n");
|
|
struct lgsm_sms sms;
|
|
|
|
ptr = strchr(buf, '=');
|
|
fcomma = strchr(buf, ',');
|
|
- strncpy(sms.addr, ptr+1, fcomma-ptr-1);
|
|
- sms.addr[fcomma-ptr-1] = '\0';
|
|
- packing_7bit_character(fcomma+1, &sms);
|
|
+ if (!ptr || !fcomma) {
|
|
+ printf("Wrong command format\n");
|
|
+ } else {
|
|
+ strncpy(sms.addr, ptr+1, fcomma-ptr-1);
|
|
+ sms.addr[fcomma-ptr-1] = '\0';
|
|
+
|
|
+ /* todo define \" to allow " in text */
|
|
+ if (fcomma[1] == '"' &&
|
|
+ !strchr(fcomma+2, '"')) {
|
|
+ /* read until closing '"' */
|
|
+ rc = fscanf(stdin, "%[^\"]\"",
|
|
+ fcomma+strlen(fcomma));
|
|
+ if (rc == EOF) {
|
|
+ printf("EOF\n");
|
|
+ return -1;
|
|
+ }
|
|
+ /* remove brackets */
|
|
+ fcomma++;
|
|
+ fcomma[strlen(fcomma)] = '\0';
|
|
+ }
|
|
+
|
|
+ printf("Send SMS\n");
|
|
+ packing_7bit_character(fcomma+1, &sms);
|
|
|
|
- lgsm_sms_send(lgsmh, &sms);
|
|
+ lgsm_sms_send(lgsmh, &sms);
|
|
+ }
|
|
} else if ( !strncmp(buf, "sw", 2)) {
|
|
printf("Write SMS\n");
|
|
struct lgsm_sms_write sms_write;
|