无法编译 ecepass.c
unable to compile ecepass.c
我一辈子都无法编译这段旧代码。我正试图用它来测试客户端的外部漏洞。我在 FreeBSD 11 中有它 运行 并用 gcc 编译。知道为什么我会收到此错误吗?
int in_cksum(u_short *addr, int len)
{
int sum;
int nleft;
u_short ans;
u_short *w;
sum = 0;
ans = 0;
nleft = len;
w = addr;
while (nleft > 1) {
sum += *w++;
nleft -= 2;
}
if (nleft == 1) {
*(u_char *)(&ans) = *(u_char *)w;
sum += ans;
}
return (sum);
}
完整代码在这里:https://pastebin.com/MGSYycmB
错误:
In file included from ecepass.c:8:0:
ecepass.c:72:5: error: expected declaration specifiers or '...' before numeric constant
int in_cksum(u_short *addr, int len)
在 PasteBin 上发布的代码中,第 #8 行(和 #24 :d) 有声明:#include <machine/in_cksum.h>
由于我不在 Nix,我在 Internet 上搜索了该文件并找到了 2 个参考文献:
- [GitHub]: osv/bsd/x64/machine/in_cksum.h
- [RTEMS]: source:rtems-libbsd/freebsd/sys/arm/include/machine/in_cksum.h @ ffcd542
在两者中(在 #40+ 行附近),似乎 in_cksum 是预处理器宏:
#define in_cksum(m, len) in_cksum_skip(m, len, 0)
将您的函数名称(以及您代码中所有引用它的地方)更改为不是宏的名称,或者实际上是另一个已定义的标识符,例如checksum(希望它尚未定义 :)),你应该没问题(也可能适用于你的其他函数)。
或者作为替代方案,删除machine/in_cksum.h 包含(直接 和 间接(通过其他嵌套包含)),但这可能会有点困难(另外,我没有检查所有代码以查看是否使用了 include 中的其他函数。
我一辈子都无法编译这段旧代码。我正试图用它来测试客户端的外部漏洞。我在 FreeBSD 11 中有它 运行 并用 gcc 编译。知道为什么我会收到此错误吗?
int in_cksum(u_short *addr, int len)
{
int sum;
int nleft;
u_short ans;
u_short *w;
sum = 0;
ans = 0;
nleft = len;
w = addr;
while (nleft > 1) {
sum += *w++;
nleft -= 2;
}
if (nleft == 1) {
*(u_char *)(&ans) = *(u_char *)w;
sum += ans;
}
return (sum);
}
完整代码在这里:https://pastebin.com/MGSYycmB
错误:
In file included from ecepass.c:8:0: ecepass.c:72:5: error: expected declaration specifiers or '...' before numeric constant int in_cksum(u_short *addr, int len)
在 PasteBin 上发布的代码中,第 #8 行(和 #24 :d) 有声明:#include <machine/in_cksum.h>
由于我不在 Nix,我在 Internet 上搜索了该文件并找到了 2 个参考文献:
- [GitHub]: osv/bsd/x64/machine/in_cksum.h
- [RTEMS]: source:rtems-libbsd/freebsd/sys/arm/include/machine/in_cksum.h @ ffcd542
在两者中(在 #40+ 行附近),似乎 in_cksum 是预处理器宏:
#define in_cksum(m, len) in_cksum_skip(m, len, 0)
将您的函数名称(以及您代码中所有引用它的地方)更改为不是宏的名称,或者实际上是另一个已定义的标识符,例如checksum(希望它尚未定义 :)),你应该没问题(也可能适用于你的其他函数)。
或者作为替代方案,删除machine/in_cksum.h 包含(直接 和 间接(通过其他嵌套包含)),但这可能会有点困难(另外,我没有检查所有代码以查看是否使用了 include 中的其他函数。