added pad function. Learning lots of cool things
This commit is contained in:
parent
fc6aee5ddc
commit
234f3c4c93
5
howto.md
5
howto.md
|
@ -63,6 +63,11 @@ RangeError: Index out of range
|
||||||
```
|
```
|
||||||
which is located in the node.js buffer module. The API is [here](https://nodejs.org/api/buffer.html).
|
which is located in the node.js buffer module. The API is [here](https://nodejs.org/api/buffer.html).
|
||||||
|
|
||||||
|
However, the error we are working with will most likely be dealt with by parsing through the binary
|
||||||
|
and putting it in a format that is acceptable to a custom buffer, since the current buffer.js does
|
||||||
|
doesn't seem to do the trick.
|
||||||
|
|
||||||
|
Binary
|
||||||
|
|
||||||
When can a Buffer overflow problem occur in js?
|
When can a Buffer overflow problem occur in js?
|
||||||
|
|
||||||
|
|
25
listen.js
25
listen.js
|
@ -11,12 +11,30 @@ var dns = require('dns-js');
|
||||||
var broadcast = '224.0.0.251'; // mdns
|
var broadcast = '224.0.0.251'; // mdns
|
||||||
var port = 5353; // mdns
|
var port = 5353; // mdns
|
||||||
|
|
||||||
|
// ex: pad('11111', 8, '0')
|
||||||
|
function pad(str, len, ch) {
|
||||||
|
|
||||||
|
while (str.length < len) {
|
||||||
|
str = ch + str;
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
socket.on('message', function (message, rinfo) {
|
socket.on('message', function (message, rinfo) {
|
||||||
console.log('Received %d bytes from %s:%d\n',
|
console.log('Received %d bytes from %s:%d\n',
|
||||||
message.length, rinfo.address, rinfo.port);
|
message.length, rinfo.address, rinfo.port);
|
||||||
//console.log(msg.toString('utf8'));
|
//console.log(msg.toString('utf8'));
|
||||||
message.forEach(parseInt(byte.toString('hex'), 16).toString(2));
|
|
||||||
|
message.forEach(function(byte){
|
||||||
|
|
||||||
|
console.log(pad(byte.toString(2), 8,'0'));
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('got here');
|
||||||
console.log(message.toString('hex'));
|
console.log(message.toString('hex'));
|
||||||
|
console.log(message.toString('ascii'));
|
||||||
var packets;
|
var packets;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -31,10 +49,15 @@ message.forEach(parseInt(byte.toString('hex'), 16).toString(2));
|
||||||
if (!Array.isArray(packets)) { packets = [packets]; }
|
if (!Array.isArray(packets)) { packets = [packets]; }
|
||||||
|
|
||||||
require('./cloud-respond.js').respond(socket, packets, rinfo);
|
require('./cloud-respond.js').respond(socket, packets, rinfo);
|
||||||
|
|
||||||
|
// console.log(packets);
|
||||||
|
// console.log('\n');
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.bind(port, function () {
|
socket.bind(port, function () {
|
||||||
|
console.log('***********************************')
|
||||||
console.log('bound on', port);
|
console.log('bound on', port);
|
||||||
|
console.log('***********************************')
|
||||||
console.log('bound on', this.address());
|
console.log('bound on', this.address());
|
||||||
|
|
||||||
socket.setBroadcast(true);
|
socket.setBroadcast(true);
|
||||||
|
|
|
@ -42,15 +42,15 @@ BufferConsumer.prototype.slice = function (length) {
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// if ((this._offset + length) > this.length) {
|
if ((this._offset + length) > this.length) {
|
||||||
// debug('Buffer owerflow. Slice beyond buffer.', {
|
debug('Buffer owerflow. Slice beyond buffer.', {
|
||||||
// offset: this._offset,
|
offset: this._offset,
|
||||||
// length: length,
|
length: length,
|
||||||
// bufferLength: this.length
|
bufferLength: this.length
|
||||||
// });
|
});
|
||||||
// debug('so far', this);
|
debug('so far', this);
|
||||||
// throw new Error('Buffer overflow');
|
throw new Error('Buffer overflow');
|
||||||
// }
|
}
|
||||||
v = this.buffer.slice(this._offset, this._offset + length);
|
v = this.buffer.slice(this._offset, this._offset + length);
|
||||||
this._offset += length;
|
this._offset += length;
|
||||||
return v;
|
return v;
|
||||||
|
|
|
@ -225,7 +225,6 @@ function each(section /*[,filter], callback*/) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Serialize this DNSPacket into an Buffer for sending over UDP.
|
* Serialize this DNSPacket into an Buffer for sending over UDP.
|
||||||
* @returns {Buffer} A Node.js Buffer
|
* @returns {Buffer} A Node.js Buffer
|
||||||
|
|
Loading…
Reference in New Issue