void check_decs(List_t decs) { while (decs){ Dec_t d = (Dec_t)decs->data; check_dec(d); decs = decs->next; } return; }
int delete_data(char *argv, char* str) { char str_to_write[1024]; int i0 = 0; int fd_read; int fd; int ret; char sn_header[16]; char serial_name[SN_MAX_LEN]; char serial_number[SN_MAX_LEN]; char *str_sn; char str_slip[] = "-"; char arg_val[8][64]; CARD_INFO *card; CARD_INFO *card_tmp; char *str_read; int fd0; char buf[sizeof(char)+1]; char str_store[2048]; int read_flag = 0; char cmd_buf[256]; char data_buf[256]; char *str_search; //[2048]; char str_tmp[2048]; char arg_full[256]; char arg_full_non[256]; int st_len; int sr_len; memset(str_to_write , 0x0 , sizeof(str_to_write)); memset(sn_header , 0x0 , sizeof(sn_header)); memset(serial_name , 0x0 , sizeof(serial_name)); memset(serial_number , 0x0 , sizeof(serial_number)); memset(cmd_buf , 0x0 , sizeof(cmd_buf)); memset(data_buf , 0x0 , sizeof(data_buf)); memset(str_tmp , 0x0 , sizeof(str_tmp)); memset(arg_full , 0x0 , sizeof(arg_full)); memset(arg_full_non , 0x0 , sizeof(arg_full_non)); card = (CARD_INFO*) malloc(sizeof(CARD_INFO)); card_tmp = (CARD_INFO*) malloc(sizeof(CARD_INFO)); fd = open(DATA_PATH ,O_RDWR | O_CREAT,0666); if(fd < 0) { JCG("Error in open files!"); return -1; } /* get args */ while( i0 < (sizeof(arg_val)/sizeof(arg_val[0]))) { memset(arg_val[i0], 0, sizeof(arg_val[0])); i0++; } /* get arguments */ i0 = 0; sprintf(data_buf,"%s",argv); str_sn = strtok(data_buf,str_slip); while(str_sn != NULL) { if(i0 != 0) str_sn = strtok(NULL,str_slip); if(str_sn == NULL) break; sprintf(arg_val[i0], "%s", str_sn); JCG("arg_val[%d]:%s.\n",i0,arg_val[i0]); i0++; if(i0 > (sizeof(arg_val)/sizeof(arg_val[0]))) break; } i0 = 0; while( i0 < (sizeof(arg_val)/sizeof(arg_val[0])) ) { if((strncasecmp(arg_val[i0],"DEL", 3) == 0 ) \ && i0 < (sizeof(arg_val)/sizeof(arg_val[0]) - 2) ) { JCG("arg_val[%d]:%s,arg[%d]:%s,arg[%d]:%s",i0,arg_val[i0], i0+1 ,arg_val[i0+1],i0+2,arg_val[i0+2]); //get sn by argument strcpy(serial_name , arg_val[i0+1]); strcpy(serial_number , arg_val[i0+2]); sprintf(arg_full,"%s-%s\n",arg_val[i0+1],arg_val[i0+2]); sprintf(arg_full_non,"%s-%s",arg_val[i0+1],arg_val[i0+2]); /* Setup serial number */ if(strlen(serial_number) != 0) { JCG("serial number is: %s",serial_number); ret = strip_sn_str(serial_number); if(ret < 0) { ret = -1; goto MAC_ERROR; } ret = check_dec(serial_number); if(ret < 0) { ret = -1; goto MAC_ERROR; } } else { JCG("serial number is wrong! shoule be ./mac_writer del-YHK-012345"); ret = -1; goto MAC_ERROR; } } i0++; } JCG("serial number is:%s",serial_number); read_data(card, str_store); JCG("get read data:\n%s\n",str_store); memset(str_to_write,0x0,sizeof(str_to_write)); #ifdef ENABLE_STRUCT i0 = 0; while(card->next != NULL) { JCG("get read struct data:%s --> %s. serial_number is--> %s\n",card->name,card->number,serial_number); if(strcmp(card->number, serial_number) == 0 && strcmp(card->name, serial_name) == 0) { } else { sprintf(str_to_write,"%s%s-%s\n",str_to_write,card->name,card->number); } card_tmp = card; //memcpy(card_tmp , card, sizeof(CARD_INFO)); if(card_tmp->next != NULL) { JCG("address -->0x%08x 0x%08x",card,card_tmp->next); card = (CARD_INFO*)card_tmp->next; JCG("address -->0x%08x 0x%08x",card,card_tmp->next); if(card->name == NULL || card->number == NULL) { break; } else if((strncasecmp(card->name, "YCT", 3) != 0) && strncasecmp(card->name,"YHK",3) !=0 )//|| card->next == NULL) { card = NULL; break; } else { JCG("get read struct data:%s --> %s. serial_number is--> %s\n",card->name,card->number,serial_number); } } else { break; } } if(card != NULL) { JCG("get read struct data:\n%s --> %s\n",card->name,card->number); if(strcmp(card->number, serial_number) != 0) sprintf(str_to_write,"%s%s-%s\n",str_to_write,card->name,card->number); } JCG("data:%s",str_to_write); #else //not ENABLE_STRUCT JCG("str_store -->\n%s",str_store); JCG("arg_full -->%s",arg_full); JCG("arg_full_non -->%s",arg_full_non); str_search = strcasestr(str_store,arg_full); if(str_search == NULL) //if use \n fail then with no \n { JCG(); str_search = strcasestr(str_store,arg_full); if(str_search == NULL) return -1; } JCG("str_search --> %s",str_search); sr_len = strlen(str_store); st_len = strlen(str_search); strncpy(str_tmp,str_store,sr_len - st_len); JCG("str_tmp --> %s",str_tmp); sprintf(str_to_write,"%s%s",str_tmp,str_search + strlen(arg_full)); JCG("delete-->%s",arg_full); JCG("str_tmp-->%s",str_tmp); JCG("str to write --> %s, strlen is --> %d",str_to_write, strlen(str_to_write)); #endif if(strlen(str_to_write) != 0) { #ifdef USE_OPENSSL_RSA_ENCRYPT encrypt_write_data(str_to_write,0); #else write(fd,str_to_write,strlen(str_to_write)); #endif } else { memset(str_to_write,0x0,sizeof(str_to_write)); write(fd,str_to_write,sizeof(str_to_write)); } close(fd); /*JCG("strlen of str to write is :%d",strlen(str_to_write));*/ #if 0 /* write to flash */ memset(cmd_buf, 0x0 , sizeof(cmd_buf)); sprintf(cmd_buf,"dd if=%s of=%s %s",DATA_PATH,SOURCE_DATA_PATH,CMD_ARGS_WRITE); system(cmd_buf); /*system("dd if=/sdcard/sn.dat of=/dev/block/mmcblk1 seek=5200 bs=512");*/ JCG("cmd-->%s",cmd_buf); sync(); #endif memset(cmd_buf, 0x0 , sizeof(cmd_buf)); sprintf(cmd_buf,"%s %s",CMD_PREFIX, "echo SUCESS!"); system(cmd_buf); /*system("/system/xbin/busybox echo SUCESS!");*/ free(card_tmp); free(card); sync(); return 0; MAC_ERROR: memset(cmd_buf, 0x0 , sizeof(cmd_buf)); sprintf(cmd_buf,"%s %s",CMD_PREFIX, "echo ERROR!"); system(cmd_buf); /*system("echo ERROR!");*/ free(card_tmp); free(card); LOGE("str format error!"); return -1; }
int write_data(char *argv, char* str) { char str_to_write[2048]; int i0 = 0; int fd_read; int fd; int ret; char empty_str[11] = "-"; char sn_header[16]; char serial_number[SN_MAX_LEN]; char *str_sn; char str_slip[] = "-"; char arg_val[8][64]; char *str_read; int fd0; char buf[sizeof(char)+1]; char str_store[2048]; int read_flag = 0; char cmd_buf[256]; char data_buf[256]; memset(str_to_write , 0x0 , sizeof(str_to_write)); memset(sn_header , 0x0 , sizeof(sn_header)); memset(serial_number , 0x0 , sizeof(serial_number)); memset(cmd_buf , 0x0 , sizeof(cmd_buf)); memset(data_buf , 0x0 , sizeof(data_buf)); /* read data from flash*/ read_data(NULL, str_store); JCG("get read data:%s\n",str_store); /* get args */ while( i0 < (sizeof(arg_val)/sizeof(arg_val[0]))) { memset(arg_val[i0], 0, sizeof(arg_val[0])); i0++; } JCG(); /* get arguments */ i0 = 0; sprintf(data_buf,"%s",argv); str_sn = strtok(data_buf,str_slip); while(str_sn != NULL) { if(i0 != 0) str_sn = strtok(NULL,str_slip); if(str_sn == NULL) break; sprintf(arg_val[i0], "%s", str_sn); JCG("arg_val[%d]:%s.\n",i0,arg_val[i0]); i0++; if(i0 > (sizeof(arg_val)/sizeof(arg_val[0]))) break; } i0 = 0; while( i0 < (sizeof(arg_val)/sizeof(arg_val[0])) ) { if((strncasecmp(arg_val[i0],"YCT", 3) == 0 || strncasecmp(arg_val[i0],"YHK", 3) == 0 ) \ && i0 < (sizeof(arg_val)/sizeof(arg_val[0]) -1) ) { JCG("arg_val[%d]:%s,arg[%d]:%s",i0,arg_val[i0], i0,arg_val[i0+1]); //get sn by argument strcpy(serial_number, arg_val[i0+1]); /* Setup serial number */ if(strlen(serial_number) != 0) { sprintf(sn_header,"%s",arg_val[i0]); JCG("serial number is: %s",serial_number); ret = strip_sn_str(serial_number); if(ret < 0) { ret = -1; goto MAC_ERROR; } ret = check_dec(serial_number); if(ret < 0) { ret = -1; goto MAC_ERROR; } } else { JCG("serial number is wrong!"); ret = -1; goto MAC_ERROR; } sprintf(str_to_write, "%s%s%s%s\n", str_to_write , \ sn_header,empty_str,serial_number); } i0++; } #if 0 memset(cmd_buf, 0x0 , sizeof(cmd_buf)); sprintf(cmd_buf,"%s %s %s",CMD_PREFIX, "rm -rf ", DATA_PATH); system(cmd_buf); /*system("rm -f dsn.dat ");*/ #endif fd = open(DATA_PATH ,O_RDWR | O_CREAT | O_APPEND ,0666); if(fd < 0) { JCG("Error in open files!"); return -1; } JCG("read data : \n%s\n", str_store ); JCG("str_to_write: \n%s\n", str_to_write ); sprintf(str_store,"%s%s",str_store, str_to_write); #ifdef USE_OPENSSL_RSA_ENCRYPT close(fd); //encrypt_write_data(str_store,0); encrypt_write_data(str_to_write,1); #else write(fd,str_store,strlen(str_store)); close(fd); #endif /*JCG("strlen of str to write is :%d",strlen(str_to_write));*/ #if 0 /* write to flash */ memset(cmd_buf, 0x0 , sizeof(cmd_buf)); sprintf(cmd_buf,"dd if=%s of=%s %s",DATA_PATH,SOURCE_DATA_PATH,CMD_ARGS_WRITE); system(cmd_buf); /*system("dd if=/sdcard/sn.dat of=/dev/block/mmcblk1 seek=5200 bs=512");*/ JCG("cmd-->%s",cmd_buf); sync(); #endif memset(cmd_buf, 0x0 , sizeof(cmd_buf)); sprintf(cmd_buf,"%s %s",CMD_PREFIX, "echo SUCESS!"); system(cmd_buf); /*system("/system/xbin/busybox echo SUCESS!");*/ sync(); return 0; MAC_ERROR: memset(cmd_buf, 0x0 , sizeof(cmd_buf)); sprintf(cmd_buf,"%s %s",CMD_PREFIX, "echo ERROR!"); system(cmd_buf); /*system("echo ERROR!");*/ LOGE("str format error!"); return -1; }