From: Raphael Geissert Date: Sat, 1 May 2010 23:32:40 +0000 (+0000) Subject: Fix unaligned memory accesses in enchant (bug #51289) X-Git-Tag: php-5.3.3RC1~227 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=803869d6ff0c79567236c127b36b7b92e476a399;p=php Fix unaligned memory accesses in enchant (bug #51289) --- diff --git a/ext/enchant/enchant.c b/ext/enchant/enchant.c index 04852e1663..fb99939329 100755 --- a/ext/enchant/enchant.c +++ b/ext/enchant/enchant.c @@ -728,6 +728,7 @@ PHP_FUNCTION(enchant_dict_quick_check) if (enchant_dict_check(pdict->pdict, word, wordlen) > 0) { int n_sugg; + size_t n_sugg_st; char **suggs; if (!sugg && ZEND_NUM_ARGS() == 2) { @@ -736,7 +737,8 @@ PHP_FUNCTION(enchant_dict_quick_check) array_init(sugg); - suggs = enchant_dict_suggest(pdict->pdict, word, wordlen, (size_t *) &n_sugg); + suggs = enchant_dict_suggest(pdict->pdict, word, wordlen, n_sugg_st); + memcpy(&n_sugg, &n_sugg_st, sizeof(n_sugg)); if (suggs && n_sugg) { int i; for (i = 0; i < n_sugg; i++) { @@ -781,6 +783,7 @@ PHP_FUNCTION(enchant_dict_suggest) char **suggs; enchant_dict *pdict; int n_sugg; + size_t n_sugg_st; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &dict, &word, &wordlen) == FAILURE) { RETURN_FALSE; @@ -788,7 +791,8 @@ PHP_FUNCTION(enchant_dict_suggest) PHP_ENCHANT_GET_DICT; - suggs = enchant_dict_suggest(pdict->pdict, word, wordlen, (size_t *)&n_sugg); + suggs = enchant_dict_suggest(pdict->pdict, word, wordlen, &n_sugg_st); + memcpy(&n_sugg, &n_sugg_st, sizeof(n_sugg)); if (suggs && n_sugg) { int i; diff --git a/ext/enchant/tests/dict_quick_check.phpt b/ext/enchant/tests/dict_quick_check.phpt new file mode 100644 index 0000000000..3412de1b72 --- /dev/null +++ b/ext/enchant/tests/dict_quick_check.phpt @@ -0,0 +1,26 @@ +--TEST-- +enchant_dict_quick_check() basic test +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Elements: %d +Done