sizeof换成 strlen ,strcpy换成strncpy时碰到的问题
来源:互联网 发布:大数据对企业的意义 编辑:程序博客网 时间:2024/06/07 00:05
在wifi密码保存中调用了一个加密解密算法,开始传的长度用的是sizeof,比较大,之后改成了strlen,导致进程崩溃了 调试后发现如果换成strlen+1也是正常的。查看了调用到的解密函数,发现是strcpy用的问题,地址拷贝重叠了。去掉就好了
strcpy(wlan_passwd,wifi_preaseValue);
decode_wifi_wpapasswd(wlan_passwd, wlan_passwd_tmp,sizeof(wlan_passwd));
void decode_wifi_wpapasswd(char *src, char* dest,int len)
{
char *start = src;
if (start)
{// webpage login packet:
char str[4] = {0};
#if 0
if (strncmp(start, "07541149105110531148", strlen("07541149105110531148")))
{//"Login" flag for encode passwd, if not have means no encode, return directly
return;
}
start += strlen("07541149105110531148");
#endif
char *rem = dest ;
printf("[utls.c] before decode login passwd str = %s\n", src);
while (start + 4 <= src + len)
{
if(start[0] == '0')
{
if (start[1] == '0')
{//should not to here
#if 0
if (start[2] != '0')
{//"0050" => "2" => 2 => STX(start of text)
if (start[2] == '4')
str[0] = start[3] - 8;
else// '5'
str[0] = start[3] + 2;
str[1] = 0;
*rem++ = atoi(str);
}
#endif
}
else
{//"0550" => "52" => 52 => '4'
str[0] = start[1];
if (start[2] == '4')
str[1] = start[3] - 8;
else// '5'
str[1] = start[3] + 2;
str[2] = 0;
*rem++ = atoi(str);
}
}
else
{//"1250" => "122" => 122 => 'z'
str[0] = start[0];
str[1] = start[1];
if (start[2] == '4')
str[2] = start[3] - 8;
else// '5'
str[2] = start[3] + 2;
*rem++ = atoi(str);
}
start += 4;
}
strcpy(rem, dest);
}
printf("[utls.c] after decode login passwd str = %s\n", dest);
return;
}
阅读全文
0 0
- sizeof换成 strlen ,strcpy换成strncpy时碰到的问题
- 测试strncpy与strcpy,strlen 与sizeof的区别
- strncpy strcpy strncat strcat sizeof strlen 概述
- sizeof strlen memset strncpy的基本用法
- strncpy、snprintf、sizeof、strlen
- strcpy函数的用法,strlen,sizeof区别
- winform关于回车换成tab的问题
- CString装换成const char*的问题
- IE8换成IE6 问题
- strncpy()、 strcpy()、 strcmp 、strdup、 strlen函数的实现!
- strncpy()、 strcpy()、 strcmp 、strdup、 strlen函数的实现
- memcpy、strcpy、strncpy、strlen、strcat几个函数的实现
- strlen,strcat,strcpy,strncpy,strcmp的具体实现
- strcpy/strncpy/strcat/strcmp/strlen函数的c语言实现
- strlen ,strct strcpy,strncpy,ctrcmp,函数的原型
- 几个常用函数的实现strcpy、 strncpy、 strncat 、 strcmp、 strlen
- 自己实现strcpy,strncpy,strncat,strcmp,strlen的功能
- strlen strcmp strcat strcpy strncpy strstr strchar函数的实现
- Course Schedule I && II 总结
- VS2010下 使用HALCON12 的库
- 显著性检测数据集简单介绍及下载链接
- Java实践(四)----所有类的祖宗Object
- 设计模式-迭代器模式
- sizeof换成 strlen ,strcpy换成strncpy时碰到的问题
- POJ 3159 Candies(最短路 差分约束)
- 手动安装cloudera manager 5.x(tar包方式)详解
- Apache Solr基本配置
- 1101: [POI2007]Zap/2045: 双亲数/2301: [HAOI2011]Problem b
- BZOJ 3524 主席树(随机数水过) 解题报告
- [展览人周刊]华展云20170710期
- canvas元素的总结
- poj3294 Life Forms(后缀数组+二分答案)