~ubuntu-branches/ubuntu/lucid/libstruts1.2-java/lucid

« back to all changes in this revision

Viewing changes to src/share/org/apache/struts/validator/FieldChecks.java

  • Committer: Bazaar Package Importer
  • Author(s): Arnaud Vandyck
  • Date: 2006-04-24 12:14:23 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20060424121423-naev53qigqgks0sa
Tags: 1.2.9-1
New upstream  release Fixes  three security  problems: CVE-2006-1546,
CVE-2006-1547,  CVE-2006-1548  (closes:  #360551),  thanks  to  Moritz
Muehlenhoff.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * $Header: /home/cvs/jakarta-struts/src/share/org/apache/struts/validator/FieldChecks.java,v 1.20 2004/09/03 20:11:19 niallp Exp $
3
 
 * $Revision: 1.20 $
4
 
 * $Date: 2004/09/03 20:11:19 $
 
2
 * $Id: FieldChecks.java 164530 2005-04-25 03:11:07Z niallp $ 
5
3
 *
6
 
 * Copyright 2000-2004 The Apache Software Foundation.
 
4
 * Copyright 2000-2005 The Apache Software Foundation.
7
5
 * 
8
6
 * Licensed under the Apache License, Version 2.0 (the "License");
9
7
 * you may not use this file except in compliance with the License.
25
23
import java.util.Locale;
26
24
import java.util.StringTokenizer;
27
25
 
 
26
import javax.servlet.ServletContext;
28
27
import javax.servlet.http.HttpServletRequest;
29
28
 
30
29
import org.apache.commons.logging.Log;
33
32
import org.apache.commons.validator.GenericTypeValidator;
34
33
import org.apache.commons.validator.GenericValidator;
35
34
import org.apache.commons.validator.UrlValidator;
 
35
import org.apache.commons.validator.Validator;
36
36
import org.apache.commons.validator.ValidatorAction;
37
37
import org.apache.commons.validator.util.ValidatorUtils;
38
38
import org.apache.struts.action.ActionMessages;
72
72
     * field being validated.
73
73
     * @param errors The <code>ActionMessages</code> object to add errors to if
74
74
     * any validation errors occur.
 
75
     * @param validator The <code>Validator</code> instance, used to access
 
76
     *                  other field values.
75
77
     * @param request Current request object.
76
78
     * @return true if meets stated requirements, false otherwise.
77
79
     */
78
80
    public static boolean validateRequired(Object bean,
79
81
                                           ValidatorAction va, Field field,
80
82
                                           ActionMessages errors,
 
83
                                           Validator validator,
81
84
                                           HttpServletRequest request) {
82
85
 
83
86
        String value = null;
88
91
        }
89
92
 
90
93
        if (GenericValidator.isBlankOrNull(value)) {
91
 
            errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
94
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
92
95
            return false;
93
96
        } else {
94
97
            return true;
114
117
    public static boolean validateRequiredIf(Object bean,
115
118
                                             ValidatorAction va, Field field,
116
119
                                             ActionMessages errors,
117
 
                                             org.apache.commons.validator.Validator validator,
 
120
                                             Validator validator,
118
121
                                             HttpServletRequest request) {
119
122
 
120
123
        Object form = validator.getParameterValue(org.apache.commons.validator.Validator.BEAN_PARAM);
191
194
                        if (GenericValidator.isBlankOrNull(value)) {
192
195
                                errors.add(
193
196
                                        field.getKey(),
194
 
                                        Resources.getActionMessage(request, va, field));
 
197
                                        Resources.getActionMessage(validator, request, va, field));
195
198
 
196
199
                return false;
197
200
 
212
215
     * field being validated.
213
216
     * @param errors   The <code>ActionMessages</code> object to add errors to if
214
217
     * any validation errors occur.
 
218
     * @param validator The <code>Validator</code> instance, used to access
 
219
     * other field values.
215
220
     * @param request Current request object.
216
221
     * @return true if field matches mask, false otherwise.
217
222
     */
218
223
    public static boolean validateMask(Object bean,
219
224
                                       ValidatorAction va, Field field,
220
225
                                       ActionMessages errors,
 
226
                                       Validator validator,
221
227
                                       HttpServletRequest request) {
222
228
 
223
229
        String mask = field.getVarValue("mask");
234
240
 
235
241
                errors.add(
236
242
                    field.getKey(),
237
 
                    Resources.getActionMessage(request, va, field));
 
243
                    Resources.getActionMessage(validator, request, va, field));
238
244
 
239
245
                return false;
240
246
            } else {
256
262
     *field being validated.
257
263
     *@param errors The <code>ActionMessages</code> object to add errors to if
258
264
     *any validation errors occur.
 
265
     * @param validator The <code>Validator</code> instance, used to access
 
266
     * other field values.
259
267
     *@param request Current request object.
260
268
     *@return true if valid, false otherwise.
261
269
     */
262
270
    public static Object validateByte(Object bean,
263
271
                                    ValidatorAction va, Field field,
264
272
                                    ActionMessages errors,
 
273
                                    Validator validator,
265
274
                                    HttpServletRequest request) {
266
275
 
267
276
        Object result = null;
279
288
        result = GenericTypeValidator.formatByte(value);
280
289
 
281
290
        if (result == null) {
282
 
            errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
291
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
283
292
        }
284
293
 
285
294
        return result == null ? Boolean.FALSE : result;
295
304
     * field being validated.
296
305
     * @param errors The <code>ActionMessages</code> object to add errors to if
297
306
     * any validation errors occur.
 
307
     * @param validator The <code>Validator</code> instance, used to access
 
308
     * other field values.
298
309
     * @param request Current request object.
299
310
     * @return true if valid, false otherwise.
300
311
     */
301
312
    public static Object validateShort(Object bean,
302
313
                                      ValidatorAction va, Field field,
303
314
                                      ActionMessages errors,
 
315
                                      Validator validator,
304
316
                                      HttpServletRequest request) {
305
317
        Object result = null;
306
318
        String value = null;
317
329
        result = GenericTypeValidator.formatShort(value);
318
330
 
319
331
        if (result == null) {
320
 
            errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
332
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
321
333
        }
322
334
 
323
335
        return result == null ? Boolean.FALSE : result;
333
345
     *      field being validated.
334
346
     * @param  errors   The <code>ActionMessages</code> object to add errors to if any
335
347
     *      validation errors occur.
 
348
     * @param validator The <code>Validator</code> instance, used to access
 
349
     * other field values.
336
350
     * @param  request  Current request object.
337
351
     * @return true if valid, false otherwise.
338
352
     */
339
353
    public static Object validateInteger(Object bean,
340
354
                                          ValidatorAction va, Field field,
341
355
                                          ActionMessages errors,
 
356
                                          Validator validator,
342
357
                                          HttpServletRequest request) {
343
358
        Object result = null;
344
359
        String value = null;
355
370
        result = GenericTypeValidator.formatInt(value);
356
371
 
357
372
        if (result == null) {
358
 
            errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
373
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
359
374
        }
360
375
 
361
376
        return result == null ? Boolean.FALSE : result;
371
386
     *      field being validated.
372
387
     * @param  errors   The <code>ActionMessages</code> object to add errors to if any
373
388
     *      validation errors occur.
 
389
     * @param validator The <code>Validator</code> instance, used to access
 
390
     * other field values.
374
391
     * @param  request  Current request object.
375
392
     * @return true if valid, false otherwise.
376
393
     */
377
394
    public static Object validateLong(Object bean,
378
395
                                    ValidatorAction va, Field field,
379
396
                                    ActionMessages errors,
 
397
                                    Validator validator,
380
398
                                    HttpServletRequest request) {
381
399
        Object result = null;
382
400
        String value = null;
393
411
        result = GenericTypeValidator.formatLong(value);
394
412
 
395
413
        if (result == null) {
396
 
            errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
414
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
397
415
        }
398
416
 
399
417
        return result == null ? Boolean.FALSE : result;
409
427
     *      field being validated.
410
428
     * @param  errors   The <code>ActionMessages</code> object to add errors to if any
411
429
     *      validation errors occur.
 
430
     * @param validator The <code>Validator</code> instance, used to access
 
431
     * other field values.
412
432
     * @param  request  Current request object.
413
433
     * @return true if valid, false otherwise.
414
434
     */
415
435
    public static Object validateFloat(Object bean,
416
436
                                      ValidatorAction va, Field field,
417
437
                                      ActionMessages errors,
 
438
                                      Validator validator,
418
439
                                      HttpServletRequest request) {
419
440
        Object result = null;
420
441
        String value = null;
431
452
        result = GenericTypeValidator.formatFloat(value);
432
453
 
433
454
        if (result == null) {
434
 
            errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
455
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
435
456
        }
436
457
 
437
458
        return result == null ? Boolean.FALSE : result;
447
468
     *      field being validated.
448
469
     * @param  errors   The <code>ActionMessages</code> object to add errors to if any
449
470
     *      validation errors occur.
 
471
     * @param validator The <code>Validator</code> instance, used to access
 
472
     * other field values.
450
473
     * @param  request  Current request object.
451
474
     * @return true if valid, false otherwise.
452
475
     */
453
476
    public static Object validateDouble(Object bean,
454
477
                                        ValidatorAction va, Field field,
455
478
                                        ActionMessages errors,
 
479
                                        Validator validator,
456
480
                                        HttpServletRequest request) {
457
481
        Object result = null;
458
482
        String value = null;
469
493
        result = GenericTypeValidator.formatDouble(value);
470
494
 
471
495
        if (result == null) {
472
 
            errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
496
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
473
497
        }
474
498
 
475
499
        return result == null ? Boolean.FALSE : result;
491
515
     *      field being validated.
492
516
     * @param  errors   The <code>ActionMessages</code> object to add errors to if any
493
517
     *      validation errors occur.
 
518
     * @param validator The <code>Validator</code> instance, used to access
 
519
     * other field values.
494
520
     * @param  request  Current request object.
495
521
     * @return true if valid, false otherwise.
496
522
     */
497
523
    public static Object validateDate(Object bean,
498
524
                                    ValidatorAction va, Field field,
499
525
                                    ActionMessages errors,
 
526
                                    Validator validator,
500
527
                                    HttpServletRequest request) {
501
528
 
502
529
        Object result = null;
527
554
        }
528
555
 
529
556
        if (result == null) {
530
 
            errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
557
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
531
558
        }
532
559
 
533
560
        return result == null ? Boolean.FALSE : result;
543
570
     *      field being validated.
544
571
     * @param  errors   The <code>ActionMessages</code> object to add errors to if any
545
572
     *      validation errors occur.
 
573
     * @param validator The <code>Validator</code> instance, used to access
 
574
     * other field values.
546
575
     * @param  request  Current request object.
547
576
     * @return True if in range, false otherwise.
548
577
     */
549
578
    public static boolean validateIntRange(Object bean,
550
579
                                           ValidatorAction va, Field field,
551
580
                                           ActionMessages errors,
 
581
                                           Validator validator,
552
582
                                           HttpServletRequest request) {
553
583
 
554
584
        String value = null;
565
595
                int max = Integer.parseInt(field.getVarValue("max"));
566
596
 
567
597
                if (!GenericValidator.isInRange(intValue, min, max)) {
568
 
                    errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
598
                    errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
569
599
 
570
600
                    return false;
571
601
                }
572
602
            } catch (Exception e) {
573
 
                errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
603
                errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
574
604
                return false;
575
605
            }
576
606
        }
588
618
     *      field being validated.
589
619
     * @param  errors   The <code>ActionMessages</code> object to add errors to if any
590
620
     *      validation errors occur.
 
621
     * @param validator The <code>Validator</code> instance, used to access
 
622
     * other field values.
591
623
     * @param  request  Current request object.
592
624
     * @return          True if in range, false otherwise.
593
625
     */
594
626
    public static boolean validateDoubleRange(Object bean,
595
627
                                              ValidatorAction va, Field field,
596
628
                                              ActionMessages errors,
 
629
                                              Validator validator,
597
630
                                              HttpServletRequest request) {
598
631
 
599
632
        String value = null;
610
643
                double max = Double.parseDouble(field.getVarValue("max"));
611
644
 
612
645
                if (!GenericValidator.isInRange(doubleValue, min, max)) {
613
 
                    errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
646
                    errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
614
647
 
615
648
                    return false;
616
649
                }
617
650
            } catch (Exception e) {
618
 
                errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
651
                errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
619
652
                return false;
620
653
            }
621
654
        }
633
666
     *      field being validated.
634
667
     * @param  errors   The <code>ActionMessages</code> object to add errors to if any
635
668
     *      validation errors occur.
 
669
     * @param validator The <code>Validator</code> instance, used to access
 
670
     *      other field values.
636
671
     * @param  request  Current request object.
637
672
     * @return True if in range, false otherwise.
638
673
     */
639
674
    public static boolean validateFloatRange(Object bean,
640
675
                                             ValidatorAction va, Field field,
641
676
                                             ActionMessages errors,
 
677
                                             Validator validator,
642
678
                                             HttpServletRequest request) {
643
679
 
644
680
        String value = null;
655
691
                float max = Float.parseFloat(field.getVarValue("max"));
656
692
 
657
693
                if (!GenericValidator.isInRange(floatValue, min, max)) {
658
 
                    errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
694
                    errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
659
695
 
660
696
                    return false;
661
697
                }
662
698
            } catch (Exception e) {
663
 
                errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
699
                errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
664
700
                return false;
665
701
            }
666
702
        }
678
714
     *      field being validated.
679
715
     * @param  errors   The <code>ActionMessages</code> object to add errors to if any
680
716
     *      validation errors occur.
 
717
     * @param validator The <code>Validator</code> instance, used to access
 
718
     *      other field values.
681
719
     * @param  request  Current request object.
682
720
     * @return true if valid, false otherwise.
683
721
     */
684
722
    public static Object validateCreditCard(Object bean,
685
723
                                          ValidatorAction va, Field field,
686
724
                                          ActionMessages errors,
 
725
                                          Validator validator,
687
726
                                          HttpServletRequest request) {
688
727
 
689
728
        Object result = null;
701
740
        result = GenericTypeValidator.formatCreditCard(value);
702
741
 
703
742
        if (result == null) {
704
 
            errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
743
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
705
744
        }
706
745
 
707
746
        return result == null ? Boolean.FALSE : result;
718
757
     *      field being validated.
719
758
     * @param  errors   The <code>ActionMessages</code> object to add errors to if any
720
759
     *      validation errors occur.
 
760
     * @param validator The <code>Validator</code> instance, used to access
 
761
     *      other field values.
721
762
     * @param  request  Current request object.
722
763
     * @return True if valid, false otherwise.
723
764
     */
724
765
    public static boolean validateEmail(Object bean,
725
766
                                        ValidatorAction va, Field field,
726
767
                                        ActionMessages errors,
 
768
                                        Validator validator,
727
769
                                        HttpServletRequest request) {
728
770
 
729
771
        String value = null;
734
776
        }
735
777
 
736
778
        if (!GenericValidator.isBlankOrNull(value) && !GenericValidator.isEmail(value)) {
737
 
            errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
779
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
738
780
            return false;
739
781
        } else {
740
782
            return true;
752
794
     *      field being validated.
753
795
     * @param  errors   The <code>ActionMessages</code> object to add errors to if any
754
796
     *      validation errors occur.
 
797
     * @param validator The <code>Validator</code> instance, used to access
 
798
     *      other field values.
755
799
     * @param  request  Current request object.
756
800
     * @return True if stated conditions met.
757
801
     */
758
802
    public static boolean validateMaxLength(Object bean,
759
803
                                            ValidatorAction va, Field field,
760
804
                                            ActionMessages errors,
 
805
                                            Validator validator,
761
806
                                            HttpServletRequest request) {
762
807
 
763
808
        String value = null;
772
817
                int max = Integer.parseInt(field.getVarValue("maxlength"));
773
818
 
774
819
                if (!GenericValidator.maxLength(value, max)) {
775
 
                    errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
820
                    errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
776
821
 
777
822
                    return false;
778
823
                }
779
824
            } catch (Exception e) {
780
 
                errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
825
                errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
781
826
                return false;
782
827
            }
783
828
        }
796
841
     *      field being validated.
797
842
     * @param  errors   The <code>ActionMessages</code> object to add errors to if any
798
843
     *      validation errors occur.
 
844
     * @param validator The <code>Validator</code> instance, used to access
 
845
     *      other field values.
799
846
     * @param  request  Current request object.
800
847
     * @return True if stated conditions met.
801
848
     */
802
849
    public static boolean validateMinLength(Object bean,
803
850
                                            ValidatorAction va, Field field,
804
851
                                            ActionMessages errors,
 
852
                                            Validator validator,
805
853
                                            HttpServletRequest request) {
806
854
 
807
855
        String value = null;
816
864
                int min = Integer.parseInt(field.getVarValue("minlength"));
817
865
 
818
866
                if (!GenericValidator.minLength(value, min)) {
819
 
                    errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
867
                    errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
820
868
 
821
869
                    return false;
822
870
                }
823
871
            } catch (Exception e) {
824
 
                errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
872
                errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
825
873
                return false;
826
874
            }
827
875
        }
854
902
     *      field being validated.
855
903
     * @param  errors   The <code>ActionMessages</code> object to add errors to if any
856
904
     *      validation errors occur.
 
905
     * @param validator The <code>Validator</code> instance, used to access
 
906
     *      other field values.
857
907
     * @param  request  Current request object.
858
908
     * @return True if valid, false otherwise.
859
909
     */
860
910
    public static boolean validateUrl(Object bean,
861
911
                                        ValidatorAction va, Field field,
862
912
                                        ActionMessages errors,
 
913
                                        Validator validator,
863
914
                                        HttpServletRequest request) {
864
915
 
865
916
        String value = null;
892
943
            if (GenericValidator.isUrl(value)) {
893
944
                return true;
894
945
            } else {
895
 
                errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
946
                errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
896
947
                return false;
897
948
            }
898
949
        }
916
967
        if (urlValidator.isValid(value)) {
917
968
            return true;
918
969
        } else {
919
 
            errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
 
970
            errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));
920
971
            return false;
921
972
        }
922
973
    }