summaryrefslogtreecommitdiff
path: root/libgammu/service/gsmmisc.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgammu/service/gsmmisc.c')
-rw-r--r--libgammu/service/gsmmisc.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libgammu/service/gsmmisc.c b/libgammu/service/gsmmisc.c
index e8e177e..0f9ea5f 100644
--- a/libgammu/service/gsmmisc.c
+++ b/libgammu/service/gsmmisc.c
@@ -258,7 +258,14 @@ gboolean ReadVCALDateTime(const char *Buffer, GSM_DateTime *dt)
memset(dt,0,sizeof(GSM_DateTime));
- if (strlen(Buffer) < 8) return FALSE;
+ /* YYYY-MM-DD is invalid, though used */
+ if (sscanf(Buffer, "%d-%d-%d", &dt->Year, &dt->Month, &dt->Day) == 3) {
+ goto checkdt;
+ }
+
+ if (strlen(Buffer) < 8) {
+ return FALSE;
+ }
strncpy(year, Buffer, 4);
strncpy(month, Buffer+4, 2);
@@ -282,6 +289,7 @@ gboolean ReadVCALDateTime(const char *Buffer, GSM_DateTime *dt)
*/
if (Buffer[15] == 'Z') dt->Timezone = 0; /* Z = ZULU = GMT */
}
+checkdt:
if (!CheckTime(dt)) {
dbgprintf(NULL, "incorrect date %d-%d-%d %d:%d:%d\n",dt->Day,dt->Month,dt->Year,dt->Hour,dt->Minute,dt->Second);