From abb8aa7c7a4d0967a28eee8730881497d9f425e3 Mon Sep 17 00:00:00 2001 From: cnieman Date: Thu, 17 Aug 2017 11:10:47 -0400 Subject: [PATCH 1/3] MS_SDE no longer available --- src/mapserver.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/mapserver.cpp b/src/mapserver.cpp index 100b679..e50e66b 100644 --- a/src/mapserver.cpp +++ b/src/mapserver.cpp @@ -121,7 +121,6 @@ namespace node_mapserver { NODE_MAPSERVER_DEFINE_CONSTANT(target, "MS_QUERY_SINGLE", MS_QUERY_SINGLE); NODE_MAPSERVER_DEFINE_CONSTANT(target, "MS_RASTER", MS_RASTER); NODE_MAPSERVER_DEFINE_CONSTANT(target, "MS_RED", MS_RED); - NODE_MAPSERVER_DEFINE_CONSTANT(target, "MS_SDE", MS_SDE); NODE_MAPSERVER_DEFINE_CONSTANT(target, "MS_SELECTED", MS_SELECTED); NODE_MAPSERVER_DEFINE_CONSTANT(target, "MS_SHAPEFILE", MS_SHAPEFILE); NODE_MAPSERVER_DEFINE_CONSTANT(target, "MS_SHAPE_LINE", MS_SHAPE_LINE); @@ -150,4 +149,4 @@ namespace node_mapserver { } } -NODE_MODULE(mapserver, node_mapserver::Init); \ No newline at end of file +NODE_MODULE(mapserver, node_mapserver::Init); From a19c68e940f24a89022b5897f1621781b2479baa Mon Sep 17 00:00:00 2001 From: Paul Spencer Date: Thu, 13 Dec 2018 18:23:01 -0500 Subject: [PATCH 2/3] Update to latest Nan, mocha. Replace deprecated callback methods. --- package.json | 4 ++-- src/ms_map.cpp | 15 +++++++++++---- tests/data/test_buffer_70004.png | Bin 0 -> 25745 bytes tests/tests.js | 2 +- 4 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 tests/data/test_buffer_70004.png diff --git a/package.json b/package.json index 011cc8a..5f24099 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "readmeFilename": "README.md", "gitHead": "32f694866ad22c3a033c4d907f20e4802bf728c5", "devDependencies": { - "mocha": "^1.10.0", - "nan": "^2.3.3" + "mocha": "^5.2.0", + "nan": "^2.11.1" } } diff --git a/src/ms_map.cpp b/src/ms_map.cpp index 5fccd65..1c1dfe6 100644 --- a/src/ms_map.cpp +++ b/src/ms_map.cpp @@ -410,14 +410,17 @@ void MSMap::EIO_AfterDrawMap(uv_work_t *req) { Nan::HandleScope scope; drawmap_baton *baton = static_cast(req->data); - + Nan::AsyncResource resource("mapserver:callback"); if (baton->data != NULL) { v8::Local buffer = Nan::NewBuffer(baton->data, baton->size, FreeImageBuffer, NULL).ToLocalChecked(); v8::Local argv[2] = { Nan::Null(), buffer }; - Nan::MakeCallback(Nan::GetCurrentContext()->Global(), Nan::New(baton->cb), 2, argv); + Nan::Callback *callback = new Nan::Callback(Nan::New(baton->cb)); + callback->Call(Nan::GetCurrentContext()->Global(), 2, argv, &resource); + } else { v8::Local argv[1] = { MSError::NewInstance(baton->error) }; - Nan::MakeCallback(Nan::GetCurrentContext()->Global(), Nan::New(baton->cb), 1, argv); + Nan::Callback *callback = new Nan::Callback(Nan::New(baton->cb)); + callback->Call(Nan::GetCurrentContext()->Global(), 1, argv, &resource); } baton->map->Unref(); @@ -480,6 +483,10 @@ NAN_METHOD(MSMap::DrawMap) { argv[0] = MSError::NewInstance(err); argv[1] = Nan::Null(); } - Nan::MakeCallback(Nan::GetCurrentContext()->Global(), info[0].As(), 2, argv); + + Nan::AsyncResource resource("mapserver:callback"); + + Nan::Callback *callback = new Nan::Callback(info[0].As()); + callback->Call(Nan::GetCurrentContext()->Global(), 2, argv, &resource); } } \ No newline at end of file diff --git a/tests/data/test_buffer_70004.png b/tests/data/test_buffer_70004.png new file mode 100644 index 0000000000000000000000000000000000000000..3ae69c0cb10701c9e892707a915a9779d7b105bc GIT binary patch literal 25745 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 a6u29DCXwR?<|2622$P|nsV-LADeNDt8~hUh literal 0 HcmV?d00001 diff --git a/tests/tests.js b/tests/tests.js index 18a3304..adbfb73 100644 --- a/tests/tests.js +++ b/tests/tests.js @@ -206,7 +206,7 @@ describe('mapserver', function() { assert.equal(map.height, 300, 'getting map height failed'); assert.equal(map.cellsize, 0, 'default map cellsize should be 0, got ' + map.cellsize); assert.equal(map.scaledenom, -1, 'default map scaledenom should be -1, got ' + map.scaledenom); - assert.equal(map.maxsize, 2048, 'getting map maxsize failed'); + assert.equal(map.maxsize, 4096, 'getting map maxsize failed'); assert.equal(map.units, mapserver.MS_DD, 'getting map units failed'); assert.equal(map.resolution, 72, 'getting map resolution failed'); assert.equal(map.defresolution, 72, 'getting map defresolution failed'); From e56d8cb8eb21fcdddd8e5f847ed6354246b9e76f Mon Sep 17 00:00:00 2001 From: Paul Spencer Date: Tue, 29 Jan 2019 07:30:55 -0500 Subject: [PATCH 3/3] Add toString on error object to prevent a segfault --- package-lock.json | 202 +++++++++++++++++++++++++++++++++++++++++++++ src/ms_error.cpp | 7 ++ src/ms_error.hpp | 4 +- tests/data/bad.map | 21 +++++ tests/tests.js | 23 ++++++ 5 files changed, 256 insertions(+), 1 deletion(-) create mode 100644 package-lock.json create mode 100755 tests/data/bad.map diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..984c763 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,202 @@ +{ + "name": "node-mapserver", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", + "dev": true + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha1-30boZ9D8Kuxmo0ZitAapzK//Ww8=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha1-bYrlCPWRZ/lA8rWzxKYSrlDJCuY=", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", + "integrity": "sha1-kOIrzLjKV+pM03zIPTgZtS7qZ2Y=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/src/ms_error.cpp b/src/ms_error.cpp index c15d5ac..441481e 100644 --- a/src/ms_error.cpp +++ b/src/ms_error.cpp @@ -6,6 +6,8 @@ void MSError::Initialize(v8::Local target) { v8::Local tpl = Nan::New (MSError::New); tpl->InstanceTemplate()->SetInternalFieldCount(1); tpl->SetClassName(Nan::New("MSError").ToLocalChecked()); + Nan::SetPrototypeMethod(tpl, "toString", ToString); + Nan::SetPrototypeMethod(tpl, "toDetailString", ToString); Nan::SetNamedPropertyHandler( tpl->InstanceTemplate() @@ -52,6 +54,11 @@ v8::Local MSError::NewInstance(errorObj *err_ptr) { return scope.Escape(Nan::New(constructor)->GetFunction()->NewInstance(1, &ext)); } +NAN_METHOD(MSError::ToString) { + MSError *err = Nan::ObjectWrap::Unwrap(info.Holder()); + info.GetReturnValue().Set(Nan::New(err->this_->message).ToLocalChecked()); +} + NAN_PROPERTY_GETTER(MSError::NamedPropertyGetter) { MSError *err = Nan::ObjectWrap::Unwrap(info.Holder()); diff --git a/src/ms_error.hpp b/src/ms_error.hpp index 39384e9..b02d491 100644 --- a/src/ms_error.hpp +++ b/src/ms_error.hpp @@ -13,9 +13,12 @@ class MSError: public Nan::ObjectWrap { static NAN_METHOD(New); static v8::Local NewInstance(errorObj* err_ptr); + static NAN_METHOD(ToString); + MSError(); MSError(errorObj *err); inline errorObj *get() { return this_; } + errorObj *this_; protected: static NAN_PROPERTY_GETTER(NamedPropertyGetter); @@ -24,7 +27,6 @@ class MSError: public Nan::ObjectWrap { private: ~MSError(); - errorObj *this_; }; #endif diff --git a/tests/data/bad.map b/tests/data/bad.map new file mode 100755 index 0000000..0315364 --- /dev/null +++ b/tests/data/bad.map @@ -0,0 +1,21 @@ +MAP +NAME GMAP_DEMO +STATUS ON +SIZE 600 300 +EXTENT -180 -90 180 90 +UNITS DD +SHAPEPATH "./foo/bar" +IMAGECOLOR 255 255 255 +PROJECTION + "init=epsg:4326" +END +LAYER + PROJECTION + "init=epsg:4326" + END + NAME prov_bound + TYPE POLYGON + STATUS ON + DATA "foo/wgs_province" +END +END diff --git a/tests/tests.js b/tests/tests.js index adbfb73..ea139bf 100644 --- a/tests/tests.js +++ b/tests/tests.js @@ -28,6 +28,7 @@ var fs = require('fs'); var path = require('path'); var datadir = path.join(__dirname, 'data'); var mapfile = path.join(datadir, 'test.map'); +var badmapfile = path.join(datadir, 'bad.map'); var symbolfile = path.join(datadir, 'symbolset.txt'); var nomapfile = 'missing.map'; var map; @@ -533,6 +534,8 @@ describe('mapserver', function() { var defaultLayerText = 'LAYER\n NAME "foo"\n STATUS OFF\n TILEITEM "location"\n UNITS METERS\nEND # LAYER\n\n'; +console.log(layer) + assert.equal(layer.toString(), defaultLayerText, 'unexpected default layer text ' + layer.toString()); }); @@ -571,6 +574,26 @@ describe('mapserver', function() { }); }); + it('should not segfault', function(done) { + var v = mapserver.getVersionInt(); + assert.doesNotThrow(function() { + map = new mapserver.Map(badmapfile); + }, Error, 'loading a invalid map file should throw an error.'); + + map.drawMap(function(drawError, buffer) { + if (drawError) { + console.log('error', drawError) + assert.ok(true, 'Returned error from bad map') + done(); + } else { + fs.writeFileSync(path.join(__dirname, 'data', 'bad_out_'+v+'.png'), buffer); + + assert.ok(false, 'Did not receive error drawing map.'); + } + }); + }); + + it('should get the label cache', function(done) { assert.doesNotThrow(function() { map = new mapserver.Map(mapfile);