Index: trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 15014)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 15015)
@@ -23,4 +23,5 @@
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -581,5 +582,5 @@
 
         static boolean isUploadCommentTooShort(String comment) {
-            String s = comment.trim();
+            String s = Utils.strip(comment);
             boolean result = true;
             if (!s.isEmpty()) {
@@ -594,14 +595,19 @@
         }
 
-        static String validateUploadTag(String uploadValue, String preferencePrefix) {
+        private static String lc(String s) {
+            return s.toLowerCase(Locale.ENGLISH);
+        }
+
+        static String validateUploadTag(String uploadValue, String preferencePrefix, List<String> defMandatory, List<String> defForbidden) {
+            String uploadValueLc = lc(uploadValue);
             // Check mandatory terms
-            List<String> missingTerms = Config.getPref().getList(preferencePrefix+".mandatory-terms")
-                .stream().filter(x -> !uploadValue.contains(x)).collect(Collectors.toList());
+            List<String> missingTerms = Config.getPref().getList(preferencePrefix+".mandatory-terms", defMandatory)
+                .stream().map(UploadAction::lc).filter(x -> !uploadValueLc.contains(x)).collect(Collectors.toList());
             if (!missingTerms.isEmpty()) {
                 return tr("The following required terms are missing: {0}", missingTerms);
             }
             // Check forbidden terms
-            List<String> forbiddenTerms = Config.getPref().getList(preferencePrefix+".forbidden-terms")
-                    .stream().filter(uploadValue::contains).collect(Collectors.toList());
+            List<String> forbiddenTerms = Config.getPref().getList(preferencePrefix+".forbidden-terms", defForbidden)
+                    .stream().map(UploadAction::lc).filter(uploadValueLc::contains).collect(Collectors.toList());
             if (!forbiddenTerms.isEmpty()) {
                 return tr("The following forbidden terms have been found: {0}", forbiddenTerms);
@@ -615,6 +621,8 @@
             dialog.forceUpdateActiveField();
 
+            final List<String> def = Collections.emptyList();
             final String uploadComment = dialog.getUploadComment();
-            final String uploadCommentRejection = validateUploadTag(uploadComment, "upload.comment");
+            final String uploadCommentRejection = validateUploadTag(
+                    uploadComment, "upload.comment", def, def);
             if ((isUploadCommentTooShort(uploadComment) && warnUploadComment()) ||
                 (uploadCommentRejection != null && warnRejectedUploadComment(uploadCommentRejection))) {
@@ -624,5 +632,6 @@
             }
             final String uploadSource = dialog.getUploadSource();
-            final String uploadSourceRejection = validateUploadTag(uploadSource, "upload.source");
+            final String uploadSourceRejection = validateUploadTag(
+                    uploadSource, "upload.source", def, Collections.singletonList("google"));
             if ((Utils.isStripEmpty(uploadSource) && warnUploadSource()) ||
                     (uploadSourceRejection != null && warnRejectedUploadSource(uploadSourceRejection))) {
