author | erik <erik> | 2007-01-26 20:24:07 (UTC) |
---|---|---|
committer | erik <erik> | 2007-01-26 20:24:07 (UTC) |
commit | cc5b326a212414a612838b0041e6077477ebbc70 (patch) (unidiff) | |
tree | fd69c302a511c3bc715ff0e160181b9ad1cbf82d | |
parent | 53d630c9c4813142ee13e6843c30476a5db26e78 (diff) | |
download | opie-cc5b326a212414a612838b0041e6077477ebbc70.zip opie-cc5b326a212414a612838b0041e6077477ebbc70.tar.gz opie-cc5b326a212414a612838b0041e6077477ebbc70.tar.bz2 |
A couple of places where a string is overrun. This fixes both of them.
-rw-r--r-- | noncore/apps/opie-reader/chm_lib.c | 5 | ||||
-rw-r--r-- | noncore/settings/sysinfo/contrib/dhry.c | 4 |
2 files changed, 5 insertions, 4 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 | |||
@@ -1587,33 +1587,33 @@ int chm_enumerate_dir(struct chmFile *h, | |||
1587 | #endif | 1587 | #endif |
1588 | struct chmPmglHeader header; | 1588 | struct chmPmglHeader header; |
1589 | UChar *end; | 1589 | UChar *end; |
1590 | UChar *cur; | 1590 | UChar *cur; |
1591 | unsigned long lenRemain; | 1591 | unsigned long lenRemain; |
1592 | 1592 | ||
1593 | /* set to 1 once we've started */ | 1593 | /* set to 1 once we've started */ |
1594 | int it_has_begun=0; | 1594 | int it_has_begun=0; |
1595 | 1595 | ||
1596 | /* the current ui */ | 1596 | /* the current ui */ |
1597 | struct chmUnitInfo ui; | 1597 | struct chmUnitInfo ui; |
1598 | int flag; | 1598 | int flag; |
1599 | 1599 | ||
1600 | /* the length of the prefix */ | 1600 | /* the length of the prefix */ |
1601 | char prefixRectified[CHM_MAX_PATHLEN+1]; | 1601 | char prefixRectified[CHM_MAX_PATHLEN+1]; |
1602 | int prefixLen; | 1602 | int prefixLen; |
1603 | char lastPath[CHM_MAX_PATHLEN]; | 1603 | char lastPath[CHM_MAX_PATHLEN+1]; |
1604 | int lastPathLen; | 1604 | int lastPathLen; |
1605 | 1605 | ||
1606 | /* starting page */ | 1606 | /* starting page */ |
1607 | curPage = h->index_head; | 1607 | curPage = h->index_head; |
1608 | 1608 | ||
1609 | /* initialize pathname state */ | 1609 | /* initialize pathname state */ |
1610 | strncpy(prefixRectified, prefix, CHM_MAX_PATHLEN); | 1610 | strncpy(prefixRectified, prefix, CHM_MAX_PATHLEN); |
1611 | prefixLen = strlen(prefixRectified); | 1611 | prefixLen = strlen(prefixRectified); |
1612 | if (prefixLen != 0) | 1612 | if (prefixLen != 0) |
1613 | { | 1613 | { |
1614 | if (prefixRectified[prefixLen-1] != '/') | 1614 | if (prefixRectified[prefixLen-1] != '/') |
1615 | { | 1615 | { |
1616 | prefixRectified[prefixLen] = '/'; | 1616 | prefixRectified[prefixLen] = '/'; |
1617 | prefixRectified[prefixLen+1] = '\0'; | 1617 | prefixRectified[prefixLen+1] = '\0'; |
1618 | ++prefixLen; | 1618 | ++prefixLen; |
1619 | } | 1619 | } |
@@ -1657,33 +1657,34 @@ int chm_enumerate_dir(struct chmFile *h, | |||
1657 | continue; | 1657 | continue; |
1658 | } | 1658 | } |
1659 | 1659 | ||
1660 | /* check if we should stop */ | 1660 | /* check if we should stop */ |
1661 | else | 1661 | else |
1662 | { | 1662 | { |
1663 | if (strncmp(ui.path, prefixRectified, prefixLen) != 0) | 1663 | if (strncmp(ui.path, prefixRectified, prefixLen) != 0) |
1664 | return 1; | 1664 | return 1; |
1665 | } | 1665 | } |
1666 | 1666 | ||
1667 | /* check if we should include this path */ | 1667 | /* check if we should include this path */ |
1668 | if (lastPathLen != -1) | 1668 | if (lastPathLen != -1) |
1669 | { | 1669 | { |
1670 | if (strncmp(ui.path, lastPath, lastPathLen) == 0) | 1670 | if (strncmp(ui.path, lastPath, lastPathLen) == 0) |
1671 | continue; | 1671 | continue; |
1672 | } | 1672 | } |
1673 | strcpy(lastPath, ui.path); | 1673 | strncpy(lastPath, ui.path, CHM_MAX_PATHLEN); |
1674 | lastPath[CHM_MAX_PATHLEN] = '\0'; | ||
1674 | lastPathLen = strlen(lastPath); | 1675 | lastPathLen = strlen(lastPath); |
1675 | 1676 | ||
1676 | /* check for DIRS */ | 1677 | /* check for DIRS */ |
1677 | if (ui.length == 0 && !(what & CHM_ENUMERATE_DIRS)) | 1678 | if (ui.length == 0 && !(what & CHM_ENUMERATE_DIRS)) |
1678 | continue; | 1679 | continue; |
1679 | 1680 | ||
1680 | /* check for FILES */ | 1681 | /* check for FILES */ |
1681 | if (ui.length != 0 && !(what & CHM_ENUMERATE_FILES)) | 1682 | if (ui.length != 0 && !(what & CHM_ENUMERATE_FILES)) |
1682 | continue; | 1683 | continue; |
1683 | 1684 | ||
1684 | /* check for NORMAL vs. META */ | 1685 | /* check for NORMAL vs. META */ |
1685 | if (ui.path[0] == '/') | 1686 | if (ui.path[0] == '/') |
1686 | { | 1687 | { |
1687 | 1688 | ||
1688 | /* check for NORMAL vs. SPECIAL */ | 1689 | /* check for NORMAL vs. SPECIAL */ |
1689 | if (ui.path[1] == '#' || ui.path[1] == '$') | 1690 | if (ui.path[1] == '#' || ui.path[1] == '$') |
diff --git a/noncore/settings/sysinfo/contrib/dhry.c b/noncore/settings/sysinfo/contrib/dhry.c index 20b627c..07fd1c0 100644 --- a/noncore/settings/sysinfo/contrib/dhry.c +++ b/noncore/settings/sysinfo/contrib/dhry.c | |||
@@ -482,33 +482,33 @@ double dtime() | |||
482 | #include <stdio.h> | 482 | #include <stdio.h> |
483 | #include <stdlib.h> | 483 | #include <stdlib.h> |
484 | #include <string.h> | 484 | #include <string.h> |
485 | #include "dhry.h" | 485 | #include "dhry.h" |
486 | 486 | ||
487 | /* Global Variables: */ | 487 | /* Global Variables: */ |
488 | 488 | ||
489 | Rec_Pointer Ptr_Glob, | 489 | Rec_Pointer Ptr_Glob, |
490 | Next_Ptr_Glob; | 490 | Next_Ptr_Glob; |
491 | int Int_Glob; | 491 | int Int_Glob; |
492 | Boolean Bool_Glob; | 492 | Boolean Bool_Glob; |
493 | char Ch_1_Glob, | 493 | char Ch_1_Glob, |
494 | Ch_2_Glob; | 494 | Ch_2_Glob; |
495 | int Arr_1_Glob [50]; | 495 | int Arr_1_Glob [50]; |
496 | int Arr_2_Glob [50] [50]; | 496 | int Arr_2_Glob [50] [50]; |
497 | 497 | ||
498 | char Reg_Define[] = "Register option selected."; | 498 | char Reg_Define[32] = "Register option selected."; |
499 | 499 | ||
500 | //extern char *malloc (); | 500 | //extern char *malloc (); |
501 | Enumeration Func_1 (); | 501 | Enumeration Func_1 (); |
502 | /* | 502 | /* |
503 | forward declaration necessary since Enumeration may not simply be int | 503 | forward declaration necessary since Enumeration may not simply be int |
504 | */ | 504 | */ |
505 | 505 | ||
506 | #ifndef ROPT | 506 | #ifndef ROPT |
507 | #define REG | 507 | #define REG |
508 | /* REG becomes defined as empty */ | 508 | /* REG becomes defined as empty */ |
509 | /* i.e. no register variables */ | 509 | /* i.e. no register variables */ |
510 | #else | 510 | #else |
511 | #define REG register | 511 | #define REG register |
512 | #endif | 512 | #endif |
513 | 513 | ||
514 | 514 | ||
@@ -970,33 +970,33 @@ double dhry_main( int n ) | |||
970 | printf ("\n"); | 970 | printf ("\n"); |
971 | */ | 971 | */ |
972 | User_Time = End_Time - Begin_Time; | 972 | User_Time = End_Time - Begin_Time; |
973 | 973 | ||
974 | if (User_Time < Too_Small_Time) return -1; | 974 | if (User_Time < Too_Small_Time) return -1; |
975 | else | 975 | else |
976 | { | 976 | { |
977 | Microseconds = User_Time * Mic_secs_Per_Second | 977 | Microseconds = User_Time * Mic_secs_Per_Second |
978 | / (double) Number_Of_Runs; | 978 | / (double) Number_Of_Runs; |
979 | Dhrystones_Per_Second = (double) Number_Of_Runs / User_Time; | 979 | Dhrystones_Per_Second = (double) Number_Of_Runs / User_Time; |
980 | Vax_Mips = Dhrystones_Per_Second / 1757.0; | 980 | Vax_Mips = Dhrystones_Per_Second / 1757.0; |
981 | 981 | ||
982 | #ifdef ROPT | 982 | #ifdef ROPT |
983 | //printf ("Register option selected? YES\n"); | 983 | //printf ("Register option selected? YES\n"); |
984 | #else | 984 | #else |
985 | //printf ("Register option selected? NO\n"); | 985 | //printf ("Register option selected? NO\n"); |
986 | strcpy(Reg_Define, "Register option not selected."); | 986 | strncpy(Reg_Define, "Register option not selected.", 30); |
987 | #endif | 987 | #endif |
988 | printf ("Microseconds for one run through Dhrystone: "); | 988 | printf ("Microseconds for one run through Dhrystone: "); |
989 | printf ("%7.1lf \n", Microseconds); | 989 | printf ("%7.1lf \n", Microseconds); |
990 | printf ("Dhrystones per Second: "); | 990 | printf ("Dhrystones per Second: "); |
991 | printf ("%10.1lf \n", Dhrystones_Per_Second); | 991 | printf ("%10.1lf \n", Dhrystones_Per_Second); |
992 | printf ("VAX MIPS rating = %10.3lf \n",Vax_Mips); | 992 | printf ("VAX MIPS rating = %10.3lf \n",Vax_Mips); |
993 | printf ("\n"); | 993 | printf ("\n"); |
994 | 994 | ||
995 | return Dhrystones_Per_Second; | 995 | return Dhrystones_Per_Second; |
996 | 996 | ||
997 | /* | 997 | /* |
998 | 998 | ||
999 | fprintf(Ap,"\n"); | 999 | fprintf(Ap,"\n"); |
1000 | fprintf(Ap,"Dhrystone Benchmark, Version 2.1 (Language: C)\n"); | 1000 | fprintf(Ap,"Dhrystone Benchmark, Version 2.1 (Language: C)\n"); |
1001 | fprintf(Ap,"%s\n",Reg_Define); | 1001 | fprintf(Ap,"%s\n",Reg_Define); |
1002 | fprintf(Ap,"Microseconds for one loop: %7.1lf\n",Microseconds); | 1002 | fprintf(Ap,"Microseconds for one loop: %7.1lf\n",Microseconds); |