diff --git a/bch.c b/bch.c
index 9aa4ea52e0912aa8f5fad71a7f6c15f6fade09e2..a5622b28075cfb3601ed3b9ed3017ef0fb28eb31 100644
--- a/bch.c
+++ b/bch.c
@@ -1285,7 +1285,10 @@ struct bch_control *init_bch(int m, int t, unsigned int prim_poly)
 
 	/* select a primitive polynomial for generating GF(2^m) */
 	if (prim_poly == 0)
-		prim_poly = prim_poly_tab[m-min_m];
+		prim_poly = prim_poly_tab[9];
+		//prim_poly = prim_poly_tab[m-min_m];
+
+	printf("polynomail.%d\n", prim_poly_tab[8]);
 
 	bch = malloc(sizeof(*bch));
 	if (bch == NULL)
diff --git a/nand-image-builder.c b/nand-image-builder.c
index c5d63ea384e6ef322f41436daa090f586e500fa8..e88665885652326a1297b181e0246e801bda6353 100644
--- a/nand-image-builder.c
+++ b/nand-image-builder.c
@@ -294,6 +294,7 @@ int main(int argc, char **argv)
     /* Initialize BCH lib data and parameters */
 
     struct bch_control *bch = init_bch(field_order, ecc_level, 0);
+	
     if (!bch)
         goto exit;
 
@@ -347,8 +348,9 @@ int main(int argc, char **argv)
 
 	 swap(&page_buffer[(i + 1) * sector_sz], &page_buffer[sector_sz * SECTORS_PER_PAGE + (i * oob_sz)], oob_sz);
 
+		memset(ecc, 0, OOB_ECC_LEN);
 
-            encode_bch(bch, &page_buffer[i * sector_sz] , sector_sz , ecc);
+            encode_bch(bch, &page_buffer[i * sector_sz] , sector_sz + oob_ecc_ofs, ecc);