这个缓冲区溢出了node.js吗? [英] Is this buffer overflow node.js?

查看:73
本文介绍了这个缓冲区溢出了node.js吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的服务器代码:[node.js]

My server code: [node.js]

var net = require("net");
console.log("waiting");
var server = net.createServer(function(socket){
	socket.on("data", function(d){
		console.log("[*] we are taliking to somebody");
		console.log("[*] data")
		console.log(d);
		var buf = new Buffer(10);
		d.copy(buf);
		console.log("[*] buffer:")
		console.log(buf);
		console.log(" ");
		socket.write("Server !O! is online!");
	});
});
server.listen(1111, '127.0.0.1');





我的客户代码:[python]



my client code: [python]

import socket

buffer = "\x41"* 3000

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('127.0.0.1', 1111))

sock.send(buffer)
print sock.recv(40)
sock.close()





然后服务器打印:



then the server prints:

waiting
[*] we are talking to somebody
[*] data
<Buffer 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 ...>
[*] buffer 
<Buffer 41 41 41 41 41 41 41 41 41 41>





I只是不认为这是对的。



我尝试过:



我不知道该如何处理,但是node.js没有崩溃



I just don't think it's right.

What I have tried:

I don't know what to do with this, but node.js does not crash

推荐答案

为什么会溢出?

Why would it overrun?
d.copy(buf);



这是将 d 复制到 buf 直到 buf 已满。

node.js是内存管理的,它知道的大小 buf 因此它知道当 buf 已满时必须停止。


This is copying d to buf until buf is full.
node.js is memory managed, it knows the size of buf and thus it knows that it have to stop when buf is full.


这篇关于这个缓冲区溢出了node.js吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆