From 31523af5e1b9d2b1d42f0aa00185cac71da273d7 Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Wed, 17 Nov 2021 19:05:26 -0800 Subject: [PATCH] ami: fix instance id check --- src/routes/provision.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/routes/provision.js b/src/routes/provision.js index 9e7cff2ec..012044911 100644 --- a/src/routes/provision.js +++ b/src/routes/provision.js @@ -38,11 +38,10 @@ async function providerTokenAuth(req, res, next) { if (settings.provider() === 'ami') { if (typeof req.body.providerToken !== 'string' || !req.body.providerToken) return next(new HttpError(400, 'providerToken must be a non empty string')); - const [error, response] = await superagent.get('http://169.254.169.254/latest/meta-data/instance-id').timeout(30 * 1000).ok(() => true); + const [error, response] = await safe(superagent.get('http://169.254.169.254/latest/meta-data/instance-id').timeout(30 * 1000).ok(() => true)); if (error) return next(new HttpError(422, `Network error getting EC2 metadata: ${error.message}`)); - if (response.statusCode !== 200) return next(new HttpError(422, `Unable to get EC2 meta data. statusCode: ${response.status}`)); - - if (response.body !== req.body.providerToken) return next(new HttpError(422, 'Instance ID does not match')); + if (response.status !== 200) return next(new HttpError(422, `Unable to get EC2 meta data. statusCode: ${response.status}`)); + if (response.text !== req.body.providerToken) return next(new HttpError(422, 'Instance ID does not match')); next(); } else {