Re: Segmentation fault in html_entity_decode
| From: | Moriyoshi Koizumi | Date: | Wed, 12 Jan 2005 08:27:06 +0000 |
| Subject: | Re: Segmentation fault in html_entity_decode | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-14353@lists.php.net to get a copy of this message | ||
On 2005/01/12, at 16:31, Kamesh Jayachandran wrote:
#include <stdio.h> static char *ent_uni_8592_9002[] = { /* 8592 (0x2190) */ "larr", "uarr", "rarr", "darr", "harr", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8608 (0x21a0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8624 (0x21b0) */ NULL, NULL, NULL, NULL, "crarr", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8640 (0x21c0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8656 (0x21d0) */ "lArr", "uArr", "rArr", "dArr", "hArr", "vArr", NULL, NULL, NULL, NULL, "lAarr", "rAarr", NULL, "rarrw", NULL, NULL, /* 8672 (0x21e0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8704 (0x2200) */ "forall", "comp", "part", "exist", "nexist", "empty", NULL, "nabla", "isin", "notin", "epsis", NULL, "ni", "bepsi", NULL, "prod", /* 8720 (0x2210) */ "coprod", "sum", "minus", "mnplus", "plusdo", NULL, "setmn", NULL, "compfn", NULL, "radic", NULL, NULL, "prop", "infin", "ang90", /* 8736 (0x2220) */ "ang", "angmsd", "angsph", "mid", "nmid", "par", "npar", "and", "or", "cap", "cup", "int", NULL, NULL, "conint", NULL, /* 8752 (0x2230) */ NULL, NULL, NULL, NULL, "there4", "becaus", NULL, NULL, NULL, NULL, NULL, NULL, "sim", "bsim", NULL, NULL, /* 8768 (0x2240) */ "wreath", "nsim", NULL, "sime", "nsime", "cong", NULL, "ncong", "ap", "nap", "ape", NULL, "bcong", "asymp", "bump", "bumpe", /* 8784 (0x2250) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8800 (0x2260) */ "ne", "equiv", NULL, NULL, "le", "ge", "lE", "gE", "lnE", "gnE", "Lt", "Gt", "twixt", NULL, "nlt", "ngt", /* 8816 (0x2270) */ "nles", "nges", "lsim", "gsim", NULL, NULL, "lg", "gl", NULL, NULL, "pr", "sc", "cupre", "sscue", "prsim", "scsim", /* 8832 (0x2280) */ "npr", "nsc", "sub", "sup", "nsub", "nsup", "sube", "supe", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8848 (0x2290) */ NULL, NULL, NULL, NULL, NULL, "oplus", NULL, "otimes", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8864 (0x22a0) */ NULL, NULL, NULL, NULL, NULL, "perp", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8880 (0x22b0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8896 (0x22c0) */ NULL, NULL, NULL, NULL, NULL, "sdot", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8912 (0x22d0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8928 (0x22e0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8944 (0x22f0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8960 (0x2300) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "lceil", "rceil", "lfloor", "rfloor", NULL, NULL, NULL, NULL, /* 8976 (0x2310) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8992 (0x2320) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "lang", "rang" }; main() { printf("%d %d\n", sizeof(ent_uni_8592_9002) / sizeof(ent_uni_8592_9002[0]), 9002 - 8592 + 1); }
Hi Moriyoshi, Still ent_uni_8592_9002's actual size is 410 but accessed with a index 410.Huh? I'm confident about it :) It's certainly 411.
#include <stdio.h> static char *ent_uni_8592_9002[] = { /* 8592 (0x2190) */ "larr", "uarr", "rarr", "darr", "harr", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8608 (0x21a0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8624 (0x21b0) */ NULL, NULL, NULL, NULL, "crarr", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8640 (0x21c0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8656 (0x21d0) */ "lArr", "uArr", "rArr", "dArr", "hArr", "vArr", NULL, NULL, NULL, NULL, "lAarr", "rAarr", NULL, "rarrw", NULL, NULL, /* 8672 (0x21e0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8704 (0x2200) */ "forall", "comp", "part", "exist", "nexist", "empty", NULL, "nabla", "isin", "notin", "epsis", NULL, "ni", "bepsi", NULL, "prod", /* 8720 (0x2210) */ "coprod", "sum", "minus", "mnplus", "plusdo", NULL, "setmn", NULL, "compfn", NULL, "radic", NULL, NULL, "prop", "infin", "ang90", /* 8736 (0x2220) */ "ang", "angmsd", "angsph", "mid", "nmid", "par", "npar", "and", "or", "cap", "cup", "int", NULL, NULL, "conint", NULL, /* 8752 (0x2230) */ NULL, NULL, NULL, NULL, "there4", "becaus", NULL, NULL, NULL, NULL, NULL, NULL, "sim", "bsim", NULL, NULL, /* 8768 (0x2240) */ "wreath", "nsim", NULL, "sime", "nsime", "cong", NULL, "ncong", "ap", "nap", "ape", NULL, "bcong", "asymp", "bump", "bumpe", /* 8784 (0x2250) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8800 (0x2260) */ "ne", "equiv", NULL, NULL, "le", "ge", "lE", "gE", "lnE", "gnE", "Lt", "Gt", "twixt", NULL, "nlt", "ngt", /* 8816 (0x2270) */ "nles", "nges", "lsim", "gsim", NULL, NULL, "lg", "gl", NULL, NULL, "pr", "sc", "cupre", "sscue", "prsim", "scsim", /* 8832 (0x2280) */ "npr", "nsc", "sub", "sup", "nsub", "nsup", "sube", "supe", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8848 (0x2290) */ NULL, NULL, NULL, NULL, NULL, "oplus", NULL, "otimes", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8864 (0x22a0) */ NULL, NULL, NULL, NULL, NULL, "perp", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8880 (0x22b0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8896 (0x22c0) */ NULL, NULL, NULL, NULL, NULL, "sdot", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8912 (0x22d0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8928 (0x22e0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8944 (0x22f0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8960 (0x2300) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "lceil", "rceil", "lfloor", "rfloor", NULL, NULL, NULL, NULL, /* 8976 (0x2310) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8992 (0x2320) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "lang", "rang" }; main() { printf("%d %d\n", sizeof(ent_uni_8592_9002) / sizeof(ent_uni_8592_9002[0]), 9002 - 8592 + 1); }