From 042a1dbc8207430c21a83bd64a591022d0ee60e3 Mon Sep 17 00:00:00 2001 From: Joe Ross Date: Sun, 19 Oct 2014 13:34:50 -0700 Subject: [PATCH] make preferences check for [ and ] in key Change-Id: If60e87f1f141678ba261c7bf77aa26a12aa97a8b --- wpilibc/wpilibC++Devices/src/Preferences.cpp | 28 ++++++++++--------- .../edu/wpi/first/wpilibj/Preferences.java | 8 ++++-- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/wpilibc/wpilibC++Devices/src/Preferences.cpp b/wpilibc/wpilibC++Devices/src/Preferences.cpp index 5ac0c5ee7f..70985bb2a7 100644 --- a/wpilibc/wpilibC++Devices/src/Preferences.cpp +++ b/wpilibc/wpilibC++Devices/src/Preferences.cpp @@ -1,5 +1,5 @@ /*----------------------------------------------------------------------------*/ -/* Copyright (c) FIRST 2011. All Rights Reserved. */ +/* Copyright (c) FIRST 2011. All Rights Reserved. */ /* Open Source Software - may be modified and shared by FRC teams. The code */ /* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ /*----------------------------------------------------------------------------*/ @@ -564,18 +564,20 @@ void Preferences::WriteTaskRun() } static bool isKeyAcceptable(const std::string& value) { - for (unsigned int i = 0; i < value.length(); i++) { - char letter = value.at(i); - switch (letter) { - case '=': - case '\n': - case '\r': - case ' ': - case '\t': - return false; - } - } - return true; + for (unsigned int i = 0; i < value.length(); i++) { + char letter = value.at(i); + switch (letter) { + case '=': + case '\n': + case '\r': + case ' ': + case '\t': + case '[': + case ']': + return false; + } + } + return true; } void Preferences::ValueChanged(ITable* table, const std::string& key, EntryValue value, bool isNew) { diff --git a/wpilibj/wpilibJavaDevices/src/main/java/edu/wpi/first/wpilibj/Preferences.java b/wpilibj/wpilibJavaDevices/src/main/java/edu/wpi/first/wpilibj/Preferences.java index 4c615eb7e7..544da698a1 100644 --- a/wpilibj/wpilibJavaDevices/src/main/java/edu/wpi/first/wpilibj/Preferences.java +++ b/wpilibj/wpilibJavaDevices/src/main/java/edu/wpi/first/wpilibj/Preferences.java @@ -503,7 +503,7 @@ public class Preferences { file.createNewFile(); output = new FileOutputStream(file); - + output.write("[Preferences]\n".getBytes()); for (int i = 0; i < keys.size(); i++) { @@ -803,6 +803,8 @@ public class Preferences { case '\r': case ' ': case '\t': + case '[': + case ']': throw new ImproperPreferenceKeyException(value, letter); } } @@ -813,7 +815,7 @@ public class Preferences { * preference table. * * @param value - * @return + * @return true if the given string is ok to use in the preference table */ public static boolean isAcceptable(String value) { for (int i = 0; i < value.length(); i++) { @@ -824,6 +826,8 @@ public class Preferences { case '\r': case ' ': case '\t': + case '[': + case ']': return false; } }