小编Nee*_*ran的帖子

getnameinfo指定socklen_t

getnameinfo原型的第二个arg请求socklen_t类型,但sizeof使用size_t.那我怎么能得到socklen_t?

原型:

int getnameinfo(const struct sockaddr *restrict sa, socklen_t salen,
       char *restrict node, socklen_t nodelen, char *restrict service,
       socklen_t servicelen, int flags);
Run Code Online (Sandbox Code Playgroud)

例:

struct sockaddr_in SIN;
memset(&SIN, 0, sizeof(SIN)); // This should also be socklen_t ?
SIN.sin_family      = AF_INET;
SIN.sin_addr.s_addr = inet_addr(IP);
SIN.sin_port        = 0;

getnameinfo((struct sockaddr *)&SIN, sizeof(SIN) /* socklen_t */, BUFFER, NI_MAXHOST, NULL, 0, 0);
Run Code Online (Sandbox Code Playgroud)

这会给编译器错误:

socklen_t VAR;
getnameinfo((struct sockaddr *)&SIN, &VAR, BUFFER, NI_MAXHOST, NULL, 0, 0);
Run Code Online (Sandbox Code Playgroud)

c linux networking posix socklen-t

3
推荐指数
1
解决办法
6488
查看次数

IPv4到十进制的不同值?

为什么IPv4的十进制值与inet_pton和inet_addr(1734763876)不同,如果您使用这两个网站(1684366951)?

struct sockaddr_in sin;
inet_pton(AF_INET, "100.101.102.103", &(sin.sin_addr));
printf("%i\n%i\n", inet_addr("100.101.102.103"), sin.sin_addr);
Run Code Online (Sandbox Code Playgroud)

c posix

3
推荐指数
1
解决办法
1464
查看次数

http输出中的垃圾字节?

当我使用telnet查看我的网页时,我在输出中得到了这些奇怪的数字/字母.这不会发生在浏览器中,它们肯定不在我的源代码中.我检查了其他网站,但他们没有.有什么想法吗?他们是垃圾吗?我怎么能摆脱他们?

telnet www.mysite.com 80
GET/HTTP/1.1
主机www.mysite.com

网页的某些部分是可以的,但其他部分看起来像这样(我用粗体突出显示):

51
<ul>
<li><a href="/path/to/file
1b
">Link name</a></li>
<li><a href="/path-to-another-file
2a

编辑:更多信息请求
Apache 2和CGI(C)
动态生成

html browser http telnet

3
推荐指数
1
解决办法
144
查看次数

如何在声明时初始化char数组

这两种方法是否相同?

char a[10] = "";
char a[10] = { 0 };
Run Code Online (Sandbox Code Playgroud)

另外,我想声明初始化一个结构但这在gcc中不起作用:

struct c
{
    char d[10];
    int e; 
};
struct c f = { 0 };
Run Code Online (Sandbox Code Playgroud)

ac:在函数'main'中:
ac:33:警告:初始化器周围缺少括号
ac:33:警告:(初始化'f.d')
ac:33:警告:缺少初始化器
ac:33:警告:(近初始化'f.e')
ac:33:警告:未使用的变量'f'

c gcc

2
推荐指数
2
解决办法
8409
查看次数

getenv()的全局变量?

哪个是包含getenv()所有环境变量的全局变量?在什么glibc文件中这个var填充了env vars?

我相信它是**环境但是当我在bash中设置env var时它只输出SSH_AGENT_PID env var.为什么设置SSH_AGENT_PID,为什么它是唯一设置的?


DOCUMENT_ROOT='/foopath/'; export DOCUMENT_ROOT

int main(void)
{
extern char **environ;
printf("%s\n", *environ); // outputs: SSH_AGENT_PID=2822
}

c glibc

2
推荐指数
1
解决办法
1028
查看次数

为什么需要进行如此多的HTML输入清理?

我在我的html网站上用C实现了一个搜索引擎.我的整个网络都用C编程.

我知道html输入清理是必要的,因为攻击者可以将这2个html片段输入我的搜索页面,以欺骗我的搜索页面下载和显示外来图像/脚本(XSS):

<img src="path-to-attack-site"/>
<script>...xss-code-here...</script>
Run Code Online (Sandbox Code Playgroud)

难道只是通过搜索"<"和">"并从搜索查询中删除它们来阻止这些攻击吗?这不会导致两个脚本无用,因为它们不会被视为html吗?我已经看到html过滤超出了这个范围,他们绝对过滤所有JavaScript命令和html标记!

html xss sanitization

2
推荐指数
1
解决办法
3006
查看次数

在Linux中启动默认堆大小?

ulimit -s显示默认的堆栈大小限制.

是否有启动默认大小?

c linux heap glibc

2
推荐指数
2
解决办法
4606
查看次数

终止充满垃圾的字符串?

C是否允许在读取字节的末尾放置一个字符串终止符,或者仅在读取的字节是字符时才能保证?

我需要从stdin读取类似的东西,但我不知道要读取多少个字符并且不能保证EOF:

Hello World!---full of garbage until 100th byte---
Run Code Online (Sandbox Code Playgroud)
char *var = malloc(100 + 1);

read(0, var, 100); // read from stdin. Unfortunately, I do not know how many bytes to read and stdin is not guaranteed to hold an EOF. (I chose 100 as an educated guess.)

var[100] = '\0'; // Is it possible to place a terminator at the end if most of the read bytes are garbage ?
Run Code Online (Sandbox Code Playgroud)

c

0
推荐指数
1
解决办法
168
查看次数

标签 统计

c ×6

glibc ×2

html ×2

linux ×2

posix ×2

browser ×1

gcc ×1

heap ×1

http ×1

networking ×1

sanitization ×1

socklen-t ×1

telnet ×1

xss ×1