-rw-r--r-- | noncore/apps/opie-reader/chm_lib.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/noncore/apps/opie-reader/chm_lib.c b/noncore/apps/opie-reader/chm_lib.c index ecf8278..7acd1d2 100644 --- a/noncore/apps/opie-reader/chm_lib.c +++ b/noncore/apps/opie-reader/chm_lib.c @@ -1591,25 +1591,25 @@ int chm_enumerate_dir(struct chmFile *h, unsigned long lenRemain; /* set to 1 once we've started */ int it_has_begun=0; /* the current ui */ struct chmUnitInfo ui; int flag; /* the length of the prefix */ char prefixRectified[CHM_MAX_PATHLEN+1]; int prefixLen; - char lastPath[CHM_MAX_PATHLEN]; + char lastPath[CHM_MAX_PATHLEN+1]; int lastPathLen; /* starting page */ curPage = h->index_head; /* initialize pathname state */ strncpy(prefixRectified, prefix, CHM_MAX_PATHLEN); prefixLen = strlen(prefixRectified); if (prefixLen != 0) { if (prefixRectified[prefixLen-1] != '/') { @@ -1661,25 +1661,26 @@ int chm_enumerate_dir(struct chmFile *h, else { if (strncmp(ui.path, prefixRectified, prefixLen) != 0) return 1; } /* check if we should include this path */ if (lastPathLen != -1) { if (strncmp(ui.path, lastPath, lastPathLen) == 0) continue; } - strcpy(lastPath, ui.path); + strncpy(lastPath, ui.path, CHM_MAX_PATHLEN); + lastPath[CHM_MAX_PATHLEN] = '\0'; lastPathLen = strlen(lastPath); /* check for DIRS */ if (ui.length == 0 && !(what & CHM_ENUMERATE_DIRS)) continue; /* check for FILES */ if (ui.length != 0 && !(what & CHM_ENUMERATE_FILES)) continue; /* check for NORMAL vs. META */ if (ui.path[0] == '/') |