Zhang Jiuan’ Notes

几个内存相关面试题(c/c++)

void GetMemory(char *p)
{
p=(char*)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str,”helloworld”);
printf(str);
}
请问运行Test函数会有什么样的结果?
答:程序崩溃。因为GetMemory并不能传递动态内存,Test函数中的str一直都是NULL。strcpy(str,”helloworld”);将使程序崩溃。
char *GetMemory(void)
{
char p[]=”helloworld”;
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test函数会有什么样的结果?
答:可能是乱码。因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是NULL,但其原先的内容已经被清除,新内容不可知。
void GetMemory2(char **p, int num)
{
*p = (char*)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, “hello”);
printf(str);
}
请问运行Test函数会有什么样的结果?
答:(1)能够输出hello(2)内存泄漏
以上都是关于内存的问题,我想问第一个为什么说GetMemory不能传递动态内存,而第三个 GetMemory2(char **p, int num)却可以;还有第二个说GetMemory返回的是指向“栈内存”的指针,该指针的地址不是NULL,总之我不懂,最好懂得人能一句一句的解释。
If you enjoyed this post, make sure you subscribe to my RSS feed!

linux下的 rm 命令-i选项

有时候使用rm命令的时候觉得有个删除提示比较保险;但真的加上了,
在使用的大多数时候又觉得比较麻烦。这其实可通过rm的-i选项来控制的.
以下是用rm –help命令查出来的
用法:rm [选项]… 文件…
删除 (unlink) 文件。
-f, –force 强制删除。忽略不存在的文件,不提示确认
-i 在删除前需要确认
-I 在删除超过三个文件或者递归删除前要求确认。此选项比-i 提
示内容更少,但同样可以阻止大多数错误发生
–interactive[=WHEN] 根据指定的WHEN 进行确认提示:never,once (-I),
或者always (-i)。如果此参数不加WHEN 则总是提示
–one-file-system 递归删除一个层级时,跳过所有不符合命令行参
数的文件系统上的文件
[...]

asmlinkage, linux源代码

asmlinkage long sys_nice(int increment)
“asmlinkage” 是在 i386 system call 实作中相当重要的一个 gcc 标签(tag)。
当 system call handler 要呼叫相对应的 system call routine 时,便将一般用途暂存器的值 push 到 stack 里,因此 system call routine 就要由 stack 来读取 system call handler 传递的参数。这就是 asmlinkage 标签的用意。
system call handler 是 assembly code,system call routine(例如:sys_nice)是 C code,当 assembly code 呼叫 C function,并且是以 stack 方式传参数(parameter)时,在 C [...]

自动化测试中Python与C/C++的混合使用

背景
项目的 自动化测试中已经使用了基于Python 脚本的框架,自动化过程中最关键的问题就是如何实现桩模块。运用 Python 强大的功能,实现任何桩模块都是可能的,但是是否必须完全使用 Python 实现模块逻辑,成本是一个决定性因素。在桩模块逻辑简单的情况下,使用 Python 模拟模块逻辑不但使自动化测试的结构清晰,也具有更好的灵活性,但是如果桩模块逻辑复杂,实现起来可能要耗费很大的成本,也容易由于桩模块逻辑与实际不符导致测试结果不可信。在这种情况下,如果能够借用 RD 开发的某些代码段 / 库,将会对测试自动化带来很多效益。
另外,在Python 中调用 C/C++ 代码的方法也可能应用于 C/C++ 库的测试中,这种测试方法的可行性还有待研究。
以下总结出几种在Python 中调用 C/C++ 代码的方法
使用ctypes 模块调用 C 动态库
从Python2.5 开始, Python 开始提供 ctypes 模块来提供对 C 语言编译的动态库文件的调用。注意, 这里特指C 的动态库 ,用C++ 编译的动态库 ctypes 虽然能够加载,但调用时的函数名已经由于 C++ 的重载特性被加以修改,难以调用。 使用 ctypes 调用 C 动态库的好处在于不用进行额外的开发,可以直接使用编译好的动态库。 ctypes 提供了完整的 C 类型封装,也支持自定义类型,大大减少在调用过程中的工作量。 ctypes 的使用很简单,只需熟悉 python 封装与 C [...]

Linux Kernel < 2.6.19 udp_sendmsg Local Root Exploit

/***********************************************************
* hoagie_udp_sendmsg.c
* LOCAL LINUX KERNEL ROOT EXPLOIT (< 2.6.19) - CVE-2009-2698
*
* udp_sendmsg bug exploit via (*output) callback function
* used in dst_entry / rtable
*
* Bug reported by Tavis Ormandy and Julien Tinnes
* of the Google Security Team
*
* Tested with Debian Etch (r0)
*
* $ cat [...]

近期暴的linux漏洞 提升权限

前段时间,爆出一个linux用户提升普通用户权限到root权限的漏洞,很多小白开始试了,进ssh,然后./a,咋什么都没有呢?殊不知,哪有这么简单,还是需要代码的。。本文的末尾提供了代码(代码版权归原作者所有:p0c73n1(at)gmail(dot)com),也提供了编译后的执行程序。gcc版本是gcc (GCC) 4.1.1 20070105。还要注意,此漏洞需要在Linux kernel 2.6 < 2.6.19 (32bit)下才能测试通过,目前还没有好的补救办法。
国内极少数有主机商提供ssh登入权限,所以,机会不多,但是国外有很多都提供,例如DreamHost等等。。如果空间没有使用gcc的权限,可以找对应版本的gcc编译之后,ftp上去亦可。。编译命令是: gcc -o t t.c,然后执行/path/to/t 即可。。如:
[leekooqi@icnote ~]$ gcc -o t t.c
[leekooqi@icnote ~]$ ./t
sh-3.1# id
uid=0(root) gid=0(root) groups=512(leekooqi)
sh-3.1#
你会发现,你已经拥有root权限了,可以为所欲为了。。但是,记住,不要干坏事!!
原文件如下:
1./*
2.**
3.** 0×82-CVE-2009-2698
4.** Linux kernel 2.6 < 2.6.19 (32bit) ip_append_data() local ring0 root exploit
5.**
6.** Tested White Box 4(2.6.9-5.ELsmp),
7.** CentOS 4.4(2.6.9-42.ELsmp), CentOS 4.5(2.6.9-55.ELsmp),
8.** Fedora Core [...]

Linux 账号与身份管理

账号管理:
管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的,并且所有的一般用户的申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个网站的账号管理啦!在管理 Linux 主机的账号时,我们必须先来了解一下 Linux 到底是如何辨别每一个使用者的!
使用者的 ID 与群组的 ID :
其实 Linux 并不会直接认识你的『账号名称』,他认识的其实是你的『账号 ID 』才是!如果你曾经以 tarball 安装过软件的话,那么应该不难发现,在解压缩之后的档案,嘿?档案拥有者竟然是『不明的数字』?奇怪吧?这没什么好奇怪的,因为 Linux 说实在话,他真的只认识代表你身份的号码而已!而对应的号码与账号,则是记录在 /etc/passwd 当中!
怎样登入 Linux 主机呀?
好了,那么我们再来谈一谈,到底我们是怎样登入 Linux 主机的呢?其实也不难啦!当我们在主机前面或者是以 telnet 或者 ssh 登入主机时,系统会出现一个 login 的画面让你输入账号,这个时候当你输入账号与密码之后, Linux 会:
 
先找寻 /etc/passwd 里面是否有这个账号?如果没有则跳出,如果有的话则将该账号对应的 UID ( User ID )与 GID ( Group ID )读出来,另外,该账号的家目录与 shell 设定也一并读出;
再来则是核对密码表啦!这时 Linux 会进入 /etc/shadow 里面找出对应的账号与 UID,然后核对一下你刚刚输入的密码与里头的密码是否相符?
如果一切都 OK 的话,就进入 Shell 控管的阶段啰!
大致上的情况就像这样,所以呢,当你要登入你的 Linux [...]

[小说]蜗居

百度股票上涨创新高 因传言谷歌将关闭中文站

  (中国电子商务研究中心讯)3月16日消息,据国外媒体报道,受谷歌将退出中国市场传言的影响,百度股价在当地时间周一的常规交易中上涨26.6美元,涨幅为4.8%,报收于576.84美元,创下1个多月以来的最高单日涨幅。
  对此,中国电子商务研究中心搜索引擎分析师卜梓琴认为:中国互联网公司百度(Baidu Inc.)的美国存托凭证周一走高,因谷歌(Google Inc.)关闭其中文搜索引擎的可能性似乎越来越大。
  卜梓琴还表示:百度在中国占有互联网搜索市场的主导地位,过去数年一直高速发展,但谷歌和其他搜索引擎正开始奋起直追。
  据悉,谷歌中国业务的广告客户已被建议向其他网站投放广告,业务合作伙伴在考虑替代方案。中国政府上周表示,谷歌不遵守中国法律是“不负责任的”。
  加拿大皇家银行资本市场分析师斯蒂芬·朱(Stephen Ju)表示,谷歌退出中国市场的传言在推动百度股价上涨,“如果最大的竞争对手退出市场,百度就会成为中国互联网搜索市场事实上的垄断者”。但RBC Capital Markets的Stephen Ju称,如果谷歌如《华尔街日报》(Wall Street Journal)报导的那样将很快退出市场的话,百度将成为垄断者。Stephen Ju称,百度很可能会获得广告主目前投给谷歌的广告预算中的绝大部分。他补充称,跟踪百度的多数分析师预计谷歌将退出中国。
  记者未能立即联络到百度公司的代表置评。最近百度股价上涨3.2%,至567.55美元。过去12个月,该股股价上涨两倍多。而谷歌跌2.1%,至567.44美元。该股过去12个月上涨75%,但在过去3个月中下跌4%。
  在与分析师举行的一次电话会议上,百度资深副总裁沈皓瑜表示,主要竞争对手谷歌可能退出中国,并未令该公司看到这一消息对去年第四季度或今年第一季度的收入产生积极影响。但百度管理层暗示,谷歌与中国政府发生冲突,并威胁退出中国市场的确会在长远上对该公司带来好处。(中国电子商务研究中心综合报道)
转载:http://b2b.netsun.com/detail–5044325.html
If you enjoyed this post, make sure you subscribe to my RSS feed!

召回门:惠普拒绝召回问题笔记本 消极应对”质量门”

中国软件资讯网综合消息,在“3·15”即将来临之际,惠普成为众矢之的。这一切的导火索在于此前惠普黑屏、闪屏以及显卡温度过高等问题,型号集中在DV2000、DV3000、4416S、6531s等。在上述问题出现后,惠普方面仅对在保修期内的用户进行免费更换,对于一些型号的已过保修期的笔记本延长保修时间。但还是引起了消费者的强烈不满,他们希望惠普召回“黑屏、闪屏、过热”笔记本。
据悉,日前,两位南昌地区的惠普用户正式委托本报“公益律师”,准备采取法律手段向惠普主张自己的合法权益。与此同时,170名来自全国各地的惠普用户联名向国家质检总局和国家工商总局投诉惠普缺陷笔记本。
而2009年武汉市共受理惠普电脑投诉108起,主要涉及惠普金牌售后服务。惠普频频曝出质量门事件,惠普笔记本存在雪花屏、显卡芯片烧毁、黑屏死机、无线网卡无法使用等问题,被用户称为“显卡门”、“闪屏门”事件。甚至一度传出消费者维权吹响“集结号”的消息,全国约有1300名用户集体起诉惠普,发生了由北京一法律网站牵头的“惠普电脑集体维权事件”。
来自成都消息是,成都的网友组群抱团维权。截至昨日,共有来自12个维权总群和两个“惠普四川维权群”共有购买到惠普问题电脑的成都网友至少150人。
If you enjoyed this post, make sure you subscribe to my RSS feed!

返回顶部