diff --git a/src/backend/utils/mb/conversion_procs/euc2004_sjis2004/euc2004_sjis2004.c b/src/backend/utils/mb/conversion_procs/euc2004_sjis2004/euc2004_sjis2004.c index 3499f77..868bdbc 100644 *** a/src/backend/utils/mb/conversion_procs/euc2004_sjis2004/euc2004_sjis2004.c --- b/src/backend/utils/mb/conversion_procs/euc2004_sjis2004/euc2004_sjis2004.c *************** *** 218,225 **** get_ten(int b, int *ku) static void shift_jis_20042euc_jis_2004(const unsigned char *sjis, unsigned char *p, int len) { ! int c1, ! c2; int ku, ten, kubun; --- 218,224 ---- static void shift_jis_20042euc_jis_2004(const unsigned char *sjis, unsigned char *p, int len) { ! int c1; int ku, ten, kubun; *************** *** 229,235 **** shift_jis_20042euc_jis_2004(const unsigned char *sjis, unsigned char *p, int len while (len > 0) { c1 = *sjis; - c2 = sjis[1]; if (!IS_HIGHBIT_SET(c1)) { --- 228,233 ---- *************** *** 245,251 **** shift_jis_20042euc_jis_2004(const unsigned char *sjis, unsigned char *p, int len l = pg_encoding_verifymb(PG_SHIFT_JIS_2004, (const char *) sjis, len); ! if (l < 0) report_invalid_encoding(PG_SHIFT_JIS_2004, (const char *) sjis, len); --- 243,249 ---- l = pg_encoding_verifymb(PG_SHIFT_JIS_2004, (const char *) sjis, len); ! if (l < 0 || l > len) report_invalid_encoding(PG_SHIFT_JIS_2004, (const char *) sjis, len); *************** *** 257,262 **** shift_jis_20042euc_jis_2004(const unsigned char *sjis, unsigned char *p, int len --- 255,262 ---- } else if (l == 2) { + int c2 = sjis[1]; + plane = 1; ku = 1; ten = 1;