分类目录归档: 学习日志

unzip.cpp的一个问题

unzip.cpp是一个老外写的代码,用于解压zip文件的一个cpp文件,最近遇到zip内部文件路径大于MAX_PATH长度时会导致程序奔溃,单步调试发现在 ZRESULT TUnzip::Get(int index,ZIPENTRY *ze) 函数里 使用了strcpy 导致奔溃。
[cpp]

unsigned char *extra = new unsigned char[extralen];
if (lufread(extra,1,(uInt)extralen,uf->file)!=extralen)
{delete[] extra; return ZR_READ;}
ze->index=uf->num_file;
TCHAR tfn[MAX_PATH];
strcpy(tfn,fn);

[/cpp]
fn长度大于tfn长度时,strcpy 把真个tfn给填满溢出了,把上面的变量 unsigned char *extra 的值给冲掉了,导致 extra 指向了不可访问的区域。
修复方法是 用更长的值代替MAX_PATH,替换strcpy为strncpy,这样至少不会奔溃。。。

安卓设备格式化sdcard

问题现象:安卓设备上的sdcard目录ls显示没文件,写不进数据,df命令查看sdcard空间被占用完,可明明没文件空间就莫名其妙少了,想到办法就是格式化sdcard了。

1 查看挂载信息 mount

可以看见sdcard的设备路径是 /dev/block/mmcblk0p1

2 卸载 umount /mnt/sdcard

3 把busybox复制到U盘,插上U盘,调用busybox里的格式化命令。
cd /mnt/udisk
./busybox mkfs.vfat /dev/block/mmcblk0p1 这个有点慢

4 格式化后 如果不知道挂在参数 可以关机然后再开机就默认挂载了。

参考:http://windlazio.blog.163.com/blog/static/144218449201206115027123/

win7&安卓设备网线直连的一个小问题

一台安卓设备,通过ADB传输文件发现奇慢,后想到了用网线直连,数据从pc端下载到安卓设备,这种做法以前在arm开发版试过,能跑满100Mb。

在winxp测试时 设置ip同一网段(pc 192.168.1.1 安卓 192.168.1.2),子网掩码一样(255.255.255.0),其他不设,互ping能通,数据传输没问题,但到了win7时只有pc端ping安卓端通,安卓到pc端ping不通。

逐一尝试后发现要把 控制面板-》网络和Internet-》网络和共享中心-》高级共享设置 里 启用文件和打印机共享 打开后一切OK。也许是我的winxp默认打开了 ;)