Headline
CVE-2023-4796: Changeset 2966325 for woocommerce-jetpack – WordPress Plugin Repository
The Booster for WooCommerce for WordPress is vulnerable to Information Disclosure via the ‘wcj_wp_option’ shortcode in versions up to, and including, 7.1.0 due to insufficient controls on the information retrievable via the shortcode. This makes it possible for authenticated attackers, with subscriber-level capabilities or above, to retrieve arbitrary sensitive site options.
woocommerce-jetpack/trunk/includes/functions/wcj-functions-general.php
r2943364
r2966325
3
3
\* Booster for WooCommerce - Functions - General
4
4
\*
5
\* @version 7.0.0
5
\* @version 7.1.1
6
6
\* @author Pluggabl LLC.
7
7
\* @todo add \`wcj\_add\_actions()\` and \`wcj\_add\_filters()\`
…
…
188
188
\* Wcj\_tcpdf\_barcode.
189
189
\*
190
\* @version 3.4.0
190
\* @version 7.1.1
191
191
\* @since 3.3.0
192
192
\* @todo \`color\`
…
…
195
195
\*/
196
196
function wcj\_tcpdf\_barcode( $atts ) {
197
$type = wcj\_sanitize\_input\_attribute\_values( $atts\['type'\] );
198
$width = wcj\_sanitize\_input\_attribute\_values( $atts\['width'\] );
199
$height = wcj\_sanitize\_input\_attribute\_values( $atts\['height'\] );
200
$dimension = wcj\_sanitize\_input\_attribute\_values( $atts\['dimension'\] );
201
197
202
if ( '' === $atts\['code'\] ) {
198
203
return '';
199
204
}
200
if ( '' === $atts\['type'\] ) {
201
$atts\['type'\] = ( '1D' === $atts\['dimension'\] ? 'C39' : 'PDF417' );
202
}
203
if ( 0 === $atts\['width'\] ) {
204
$atts\['width'\] = ( '1D' === $atts\['dimension'\] ? 80 : 80 );
205
}
206
if ( 0 === $atts\['height'\] ) {
207
$atts\['height'\] = ( '1D' === $atts\['dimension'\] ? 30 : 80 );
208
}
209
if ( '1D' === $atts\['dimension'\] ) {
205
if ( '' === $type ) {
206
$type = ( '1D' === $dimension ? 'C39' : 'PDF417' );
207
}
208
if ( 0 === $width ) {
209
$width = ( '1D' === $dimension ? 80 : 80 );
210
}
211
if ( 0 === $height ) {
212
$height = ( '1D' === $dimension ? 30 : 80 );
213
}
214
if ( '1D' === $dimension ) {
210
215
$params = array(
211
216
$atts\['code'\],
212
$atts\['type'\],
217
$type,
213
218
'', // x.
214
219
'', // y.
215
$atts\['width'\],
216
$atts\['height'\],
220
$width,
221
$height,
217
222
0.4, // xres.
218
223
array( // style.
…
…
255
260
\* Wcj\_barcode.
256
261
\*
257
\* @version 5.6.1
262
\* @version 7.1.1
258
263
\* @since 3.3.0
259
264
\* @todo (maybe) "Barcodes" module
…
…
262
267
\*/
263
268
function wcj\_barcode( $atts ) {
269
$type = wcj\_sanitize\_input\_attribute\_values( $atts\['type'\] );
270
$width = wcj\_sanitize\_input\_attribute\_values( $atts\['width'\] );
271
$height = wcj\_sanitize\_input\_attribute\_values( $atts\['height'\] );
272
$dimension = wcj\_sanitize\_input\_attribute\_values( $atts\['dimension'\] );
264
273
if ( '' === $atts\['code'\] ) {
265
274
return '';
266
275
}
267
if ( '' === $atts\['type'\] ) {
268
$atts\['type'\] = ( '1D' === $atts\['dimension'\] ? 'C39' : 'PDF417' );
269
}
270
if ( 0 === $atts\['width'\] ) {
271
$atts\['width'\] = ( '1D' === $atts\['dimension'\] ? 2 : 10 );
272
}
273
if ( 0 === $atts\['height'\] ) {
274
$atts\['height'\] = ( '1D' === $atts\['dimension'\] ? 30 : 10 );
275
}
276
if ( '1D' === $atts\['dimension'\] ) {
276
if ( '' === $type ) {
277
$type = ( '1D' === $dimension ? 'C39' : 'PDF417' );
278
}
279
if ( 0 === $width ) {
280
$width = ( '1D' === $dimension ? 2 : 10 );
281
}
282
if ( 0 === $height ) {
283
$height = ( '1D' === $dimension ? 30 : 10 );
284
}
285
if ( '1D' === $dimension ) {
277
286
require\_once WCJ\_FREE\_PLUGIN\_PATH . '/includes/lib/tcpdf/tcpdf\_barcodes\_1d.php';
278
$barcode = new TCPDFBarcode( $atts\['code'\], $atts\['type'\] );
287
$barcode = new TCPDFBarcode( $atts\['code'\], $type );
279
288
} else {
280
289
require\_once WCJ\_FREE\_PLUGIN\_PATH . '/includes/lib/tcpdf/tcpdf\_barcodes\_2d.php';
281
$barcode = new TCPDF2DBarcode( $atts\['code'\], $atts\['type'\] );
290
$barcode = new TCPDF2DBarcode( $atts\['code'\], $type );
282
291
}
283
292
$barcode\_array = $barcode->getBarcodeArray();
284
return ( ! empty( $barcode\_array ) && is\_array( $barcode\_array ) ? $barcode->getBarcodeHTML( $atts\['width'\], $atts\['height'\], $atts\['color'\] ) : '' );
293
return ( ! empty( $barcode\_array ) && is\_array( $barcode\_array ) ? $barcode->getBarcodeHTML( $width, $height, $atts\['color'\] ) : '' );
285
294
}
286
295
}
…
…
1181
1190
}
1182
1191
}
1192
1193
1194
1195
1196
if ( ! function\_exists( 'wcj\_sanitize\_input\_attribute\_values' ) ) {
1197
/\*\*
1198
\* Wcj\_sanitize\_input\_attribute\_values.
1199
\*
1200
\* @param string $field get the field.
1201
\* @param string $attr get the attr.
1202
\* @version 7.1.1
1203
\* @since 7.1.1
1204
\*/
1205
function wcj\_sanitize\_input\_attribute\_values( $field, $attr = '' ) {
1206
1207
switch ( $attr ) {
1208
case 'style':
1209
$sanitize\_field = ( ! empty( $field ) ? preg\_replace( '/\[^-A-Za-z0-9\_#:; \]/', '', wp\_strip\_all\_tags( $field ) ) : '' ); // All style related characters are allowed!
1210
break;
1211
1212
default:
1213
$sanitize\_field = ( ! empty( $field ) ? preg\_replace( '/\[^-A-Za-z0-9\_ \]/', '', wp\_strip\_all\_tags( $field ) ) : '' ); // Only text, num, space, \_ and - allowed.
1214
break;
1215
1216
}
1217
return $sanitize\_field;
1218
1219
}
1220
}
woocommerce-jetpack/trunk/includes/shortcodes/class-wcj-general-shortcodes.php
r2837129
r2966325
3
3
\* Booster for WooCommerce - Shortcodes - General
4
4
\*
5
\* @version 6.0.1
5
\* @version 7.1.1
6
6
\* @author Pluggabl LLC.
7
7
\* @package Booster\_For\_WooCommerce/shortcodes
…
…
313
313
\* Wcj\_tcpdf\_rectangle.
314
314
\*
315
\* @version 3.4.0
315
\* @version 7.1.1
316
316
\* @since 3.3.0
317
317
\* @see https://tcpdf.org/examples/example\_012/
…
…
336
336
$fill\_color = array();
337
337
338
$width = wcj\_sanitize\_input\_attribute\_values( $atts\['width'\] );
339
$height = wcj\_sanitize\_input\_attribute\_values( $atts\['height'\] );
338
340
$params = array(
339
341
$atts\['x'\],
340
342
$atts\['y'\],
341
$atts\['width'\],
342
$atts\['height'\],
343
$width,
344
$height,
343
345
$style,
344
346
$border\_style,
…
…
400
402
\* Wcj\_button\_toggle\_tax\_display.
401
403
\*
402
\* @version 5.6.7
404
\* @version 7.1.1
403
405
\* @since 3.2.4
404
406
\* @todo (dev) different style/class for different tax state
…
…
410
412
$current\_value = ( ( '' === $session\_value || null === $session\_value ) ? wcj\_get\_option( 'woocommerce\_tax\_display\_shop', 'excl' ) : $session\_value );
411
413
$current\_value = '' === $current\_value ? 'excl' : $current\_value;
412
$label = $atts\[ 'label\_' . $current\_value \];
414
$label = wcj\_sanitize\_input\_attribute\_values( $atts\[ 'label\_' . $current\_value \] );
415
$class = wcj\_sanitize\_input\_attribute\_values( $atts\['class'\] );
416
$style = wcj\_sanitize\_input\_attribute\_values( $atts\['style'\], 'style' );
413
417
return '<form method="post" action="">' . wp\_nonce\_field( 'wcj\_button\_toggle\_tax\_display', 'wcj-button-toggle-tax-display-nonce' ) . '<input type="submit" name="wcj\_button\_toggle\_tax\_display"' .
414
' class="' . $atts\['class'\] . '" style="' . $atts\['style'\] . '" value="' . $label . '"></form>';
418
' class="' . $class . '" style="' . $style . '" value="' . $label . '"></form>';
415
419
}
416
420
…
…
444
448
\* Wcj\_wp\_option.
445
449
\*
446
\* @version 3.2.1
450
\* @version 7.1.1
447
451
\* @since 3.2.1
448
452
\* @param array $atts The user defined shortcode attributes.
449
453
\*/
450
454
public function wcj\_wp\_option( $atts ) {
451
return ( '' !== $atts\['option'\] ? wcj\_get\_option( $atts\['option'\], $atts\['default'\] ) : '' );
455
if ( isset( $atts\['option'\] ) && str\_contains( $atts\['option'\], 'wcj' ) ) {
456
return ( '' !== $atts\['option'\] ? wcj\_get\_option( $atts\['option'\], $atts\['default'\] ) : '' );
457
} else {
458
return '';
459
}
452
460
}
453
461
…
…
477
485
\* Wcj\_selector.
478
486
\*
479
\* @version 6.0.0
487
\* @version 7.1.1
480
488
\* @since 3.1.0
481
489
\* @todo add \`default\` attribute
…
…
488
496
$options = '';
489
497
$countries = apply\_filters( 'booster\_option', 'all', wcj\_get\_option( 'wcj\_product\_by\_country\_country\_list\_shortcode', 'all' ) );
490
$wpnonce = isset( $\_REQUEST\[ 'wcj\_' . $atts\['selector\_type'\] . '\_selector-nonce' \] ) ? wp\_verify\_nonce( sanitize\_key( $\_REQUEST\[ 'wcj\_' . $atts\['selector\_type'\] . '\_selector-nonce' \] ), 'wcj\_' . $atts\['selector\_type'\] . '\_selector' ) : false;
491
$selected\_value = ( ( $wpnonce && isset( $\_REQUEST\[ 'wcj\_' . $atts\['selector\_type'\] . '\_selector' \] ) ) ?
492
sanitize\_text\_field( wp\_unslash( $\_REQUEST\[ 'wcj\_' . $atts\['selector\_type'\] . '\_selector' \] ) ) :
493
wcj\_session\_get( 'wcj\_selected\_' . $atts\['selector\_type'\] )
498
$selector\_type = wcj\_sanitize\_input\_attribute\_values( $atts\['selector\_type'\] );
499
$wpnonce = isset( $\_REQUEST\[ 'wcj\_' . $selector\_type . '\_selector-nonce' \] ) ? wp\_verify\_nonce( sanitize\_key( $\_REQUEST\[ 'wcj\_' . $selector\_type . '\_selector-nonce' \] ), 'wcj\_' . $selector\_type . '\_selector' ) : false;
500
$selected\_value = ( ( $wpnonce && isset( $\_REQUEST\[ 'wcj\_' . $selector\_type . '\_selector' \] ) ) ?
501
sanitize\_text\_field( wp\_unslash( $\_REQUEST\[ 'wcj\_' . $selector\_type . '\_selector' \] ) ) :
502
wcj\_session\_get( 'wcj\_selected\_' . $selector\_type )
494
503
);
495
504
…
…
503
512
}
504
513
505
switch ( $atts\['selector\_type'\] ) {
514
switch ( $selector\_type ) {
506
515
case 'product\_custom\_visibility':
507
516
$options = wcj\_get\_select\_options( wcj\_get\_option( 'wcj\_product\_custom\_visibility\_options\_list', '' ) );
…
…
516
525
}
517
526
return '<form method="post" action="">' .
518
'<select name="wcj\_' . $atts\['selector\_type'\] . '\_selector" class="wcj\_' . $atts\['selector\_type'\] . '\_selector" onchange="this.form.submit()">' .
527
'<select name="wcj\_' . $selector\_type . '\_selector" class="wcj\_' . $selector\_type . '\_selector" onchange="this.form.submit()">' .
519
528
$html .
520
529
'</select>' .
521
wp\_nonce\_field( 'wcj\_' . $atts\['selector\_type'\] . '\_selector', 'wcj\_' . $atts\['selector\_type'\] . '\_selector-nonce' ) .
530
wp\_nonce\_field( 'wcj\_' . $selector\_type . '\_selector', 'wcj\_' . $selector\_type . '\_selector-nonce' ) .
522
531
'</form>';
523
532
}
…
…
919
928
\* Get\_currency\_selector.
920
929
\*
921
\* @version 5.6.8
930
\* @version 7.1.1
922
931
\* @since 2.4.5
923
932
\* @param array $atts The user defined shortcode attributes.
…
…
927
936
private function get\_currency\_selector( $atts, $content, $type = 'select' ) {
928
937
// Start.
929
$form\_method = $atts\['form\_method'\];
930
$class = $atts\['class'\];
931
$style = $atts\['style'\];
938
$form\_method = wcj\_sanitize\_input\_attribute\_values( $atts\['form\_method'\] );
939
$class = wcj\_sanitize\_input\_attribute\_values( $atts\['class'\] );
940
$style = wcj\_sanitize\_input\_attribute\_values( $atts\['style'\], 'style' );
932
941
$html = '';
933
942
$html .= '<form action="" method="' . $form\_method . '">';
…
…
1010
1019
\* Wcj\_country\_select\_drop\_down\_list.
1011
1020
\*
1012
\* @version 5.6.8
1021
\* @version 7.1.1
1013
1022
\* @param array $atts The user defined shortcode attributes.
1014
1023
\* @param array | string $content The user defined shortcode content.
1015
1024
\*/
1016
1025
public function wcj\_country\_select\_drop\_down\_list( $atts, $content ) {
1017
$form\_method = $atts\['form\_method'\];
1018
$select\_class = $atts\['class'\];
1019
$select\_style = $atts\['style'\];
1026
$form\_method = wcj\_sanitize\_input\_attribute\_values( $atts\['form\_method'\] );
1027
$select\_class = wcj\_sanitize\_input\_attribute\_values( $atts\['class'\] );
1028
$select\_style = wcj\_sanitize\_input\_attribute\_values( $atts\['style'\], 'style' );
1029
1020
1030
if ( ! isset( $atts\['force\_display'\] ) || ! filter\_var( $atts\['force\_display'\], FILTER\_VALIDATE\_BOOLEAN ) ) {
1021
1031
if ( ! wcj\_is\_module\_enabled( 'price\_by\_country' ) ) {
…
…
1101
1111
\* Wcj\_image.
1102
1112
\*
1103
\* @version 3.9.0
1113
\* @version 7.1.1
1104
1114
\* @since 3.9.0
1105
1115
\* @param array $atts The user defined shortcode attributes.
1106
1116
\*/
1107
1117
public function wcj\_image( $atts ) {
1118
$src = ( ! empty( $atts\['src'\] ) ? $atts\['src'\] : '' );
1119
$class = wcj\_sanitize\_input\_attribute\_values( $atts\['class'\] );
1120
$style = wcj\_sanitize\_input\_attribute\_values( $atts\['style'\], 'style' );
1121
$width = wcj\_sanitize\_input\_attribute\_values( $atts\['width'\] );
1122
$height = wcj\_sanitize\_input\_attribute\_values( $atts\['height'\] );
1123
1108
1124
return '<img' .
1109
' src="' . ( ! empty( $atts\['src'\] ) ? $atts\['src'\] : '' ) . '"' .
1110
' class="' . ( ! empty( $atts\['class'\] ) ? $atts\['class'\] : '' ) . '"' .
1111
' style="' . ( ! empty( $atts\['style'\] ) ? $atts\['style'\] : '' ) . '"' .
1112
' width="' . ( ! empty( $atts\['width'\] ) ? $atts\['width'\] : '' ) . '"' .
1113
' height="' . ( ! empty( $atts\['height'\] ) ? $atts\['height'\] : '' ) . '"' .
1125
' src="' . ( ! empty( $src ) ? $src : '' ) . '"' .
1126
' class="' . ( ! empty( $class ) ? $class : '' ) . '"' .
1127
' style="' . ( ! empty( $style ) ? $style : '' ) . '"' .
1128
' width="' . ( ! empty( $width ) ? $width : '' ) . '"' .
1129
' height="' . ( ! empty( $height ) ? $height : '' ) . '"' .
1114
1130
'>';
1115
1131
}
woocommerce-jetpack/trunk/includes/shortcodes/class-wcj-input-field-shortcodes.php
r2818772
r2966325
3
3
\* Booster for WooCommerce - Shortcodes - Input Field
4
4
\*
5
\* @version 4.7.0
5
\* @version 7.1.1
6
6
\* @since 2.5.2
7
7
\* @author Pluggabl LLC.
…
…
53
53
\* Wcj\_input\_field.
54
54
\*
55
\* @version 4.7.0
55
\* @version 7.1.1
56
56
\* @since 2.5.2
57
57
\* @param array $atts The user defined shortcode attributes.
…
…
59
59
\*/
60
60
public function wcj\_input\_field( $atts, $content ) {
61
if ( '' === $atts\['name'\] ) {
61
62
$type = wcj\_sanitize\_input\_attribute\_values( $atts\['type'\] );
63
$class = wcj\_sanitize\_input\_attribute\_values( $atts\['class'\] );
64
$name = wcj\_sanitize\_input\_attribute\_values( $atts\['name'\] );
65
$label = wcj\_sanitize\_input\_attribute\_values( $atts\['label'\] );
66
$value = wcj\_sanitize\_input\_attribute\_values( $atts\['value'\] );
67
$placeholder = wcj\_sanitize\_input\_attribute\_values( $atts\['placeholder'\] );
68
if ( '' === $name ) {
62
69
return \_\_( 'Attribute "name" is required!', 'woocommerce-jetpack' );
63
70
}
…
…
71
78
72
79
// Name.
73
$name\_html = ' name="wcj\_input\_field\_' . $atts\['name'\] . '"';
80
$name\_html = ' name="wcj\_input\_field\_' . $name . '"';
74
81
if ( isset( $atts\['name\_array'\] ) && ! empty( $atts\['name\_array'\] ) ) {
75
$name\_html = ' name="wcj\_input\_field\_' . $atts\['name\_array'\] . '\[' . $atts\['name'\] . '\]\[value\]"';
82
$name\_html = ' name="wcj\_input\_field\_' . $atts\['name\_array'\] . '\[' . $name . '\]\[value\]"';
76
83
}
77
84
…
…
79
86
$the\_field .= '<input' .
80
87
$data\_attributes\_html .
81
' type="' . $atts\['type'\] . '"' .
82
' class="' . $atts\['class'\] . '"' .
83
' value="' . $atts\['value'\] . '"' .
84
' placeholder="' . $atts\['placeholder'\] . '"' .
88
' type="' . $type . '"' .
89
' class="' . $class . '"' .
90
' value="' . $value . '"' .
91
' placeholder="' . $placeholder . '"' .
85
92
$name\_html .
86
' id="wcj\_input\_field\_' . $atts\['name'\] . '">';
93
' id="wcj\_input\_field\_' . $name . '">';
87
94
if ( '' !== $atts\['attach\_to'\] ) {
88
$the\_field .= '<input type="hidden" name="for\_wcj\_input\_field\_' . $atts\['name'\] . '" value="' . $atts\['attach\_to'\] . '">';
95
$the\_field .= '<input type="hidden" name="for\_wcj\_input\_field\_' . $name . '" value="' . $atts\['attach\_to'\] . '">';
89
96
}
90
97
91
98
// Label.
92
if ( '' !== $atts\['label'\] ) {
93
$label\_name\_html = ' name="label\_for\_wcj\_input\_field\_' . $atts\['name'\] . '"';
99
if ( '' !== $label ) {
100
$label\_name\_html = ' name="label\_for\_wcj\_input\_field\_' . $name . '"';
94
101
if ( isset( $atts\['name\_array'\] ) && ! empty( $atts\['name\_array'\] ) ) {
95
$label\_name\_html = ' name="wcj\_input\_field\_' . $atts\['name\_array'\] . '\[' . $atts\['name'\] . '\]\[label\]"';
102
$label\_name\_html = ' name="wcj\_input\_field\_' . $atts\['name\_array'\] . '\[' . $name . '\]\[label\]"';
96
103
}
97
$the\_field .= '<input type="hidden" ' . $label\_name\_html . ' value="' . $atts\['label'\] . '">';
104
$the\_field .= '<input type="hidden" ' . $label\_name\_html . ' value="' . $label . '">';
98
105
}
99
106
100
107
if ( 'yes' === $atts\['required'\] ) {
101
$the\_field .= '<input type="hidden" name="wcj\_input\_field\_' . $atts\['name'\] . '\_required" value="yes">';
108
$the\_field .= '<input type="hidden" name="wcj\_input\_field\_' . $name . '\_required" value="yes">';
102
109
}
103
110
return $the\_field;
104
111
}
105
106
112
}
107
113
woocommerce-jetpack/trunk/includes/shortcodes/class-wcj-order-items-shortcodes.php
r2853355
r2966325
3
3
\* Booster for WooCommerce - Shortcodes - Order Items
4
4
\*
5
\* @version
5
\* @version 7.1.1
6
6
\* @author Pluggabl LLC.
7
7
\* @package Booster\_For\_WooCommerce/shortcodes
…
…
525
525
\* Get\_cell.
526
526
\*
527
\* @version
527
\* @version 7.1.1
528
528
\* @since 3.2.0
529
529
\* @todo do we need \`pa\_\` replacement?
…
…
587
587
// Variation (if needed).
588
588
if ( 'yes' === $atts\['add\_variation\_info\_to\_item\_name'\] && isset( $item\['variation\_id'\] ) && 0 !== $item\['variation\_id'\] && ! in\_array( 'item\_variation', $columns, true ) ) {
589
$the\_item\_title .= '<div style="' . $atts\['style\_item\_name\_variation'\] . '">';
589
$style = wcj\_sanitize\_input\_attribute\_values( $atts\['style\_item\_name\_variation'\], 'style' );
590
$the\_item\_title .= '<div style="' . $style . '">';
590
591
if ( 'yes' === $atts\['variation\_as\_metadata'\] ) {
591
592
$the\_item\_title .= wcj\_get\_order\_item\_meta\_info( $item\_id, $item, $this->the\_order, true, $the\_product );
…
…
696
697
$image\_src = $image\_src\[0\];
697
698
}
698
$maybe\_width = ( 0 !== $atts\['product\_image\_width'\] ) ? ' width="' . $atts\['product\_image\_width'\] . '"' : '';
699
$maybe\_height = ( 0 !== $atts\['product\_image\_height'\] ) ? ' height="' . $atts\['product\_image\_height'\] . '"' : '';
699
$width = wcj\_sanitize\_input\_attribute\_values( $atts\['product\_image\_width'\] );
700
$height = wcj\_sanitize\_input\_attribute\_values( $atts\['product\_image\_height'\] );
701
$maybe\_width = ( 0 !== $width ) ? ' width="' . $width . '"' : '';
702
$maybe\_height = ( 0 !== $height ) ? ' height="' . $height . '"' : '';
700
703
return '<img src="' . $image\_src . '"' . $maybe\_width . $maybe\_height . '>';
701
704
woocommerce-jetpack/trunk/langs/woocommerce-jetpack.pot
r2950156
r2966325
299
299
#: includes/core/class-wcj-admin.php:549 includes/core/class-wcj-admin.php:568
300
300
#: includes/core/class-wcj-admin.php:584
301
#: includes/functions/wcj-functions-general.php:443
301
#: includes/functions/wcj-functions-general.php:452
302
302
msgid "Product Info"
303
303
msgstr ""
…
…
2805
2805
2806
2806
#: includes/class-wcj-empty-cart-button.php:30
2807
#: includes/shortcodes/class-wcj-general-shortcodes.php:600
2807
#: includes/shortcodes/class-wcj-general-shortcodes.php:609
2808
2808
msgid "Empty Cart Button"
2809
2809
msgstr ""
…
…
6282
6282
6283
6283
#: includes/classes/class-wcj-shortcodes.php:156
6284
#: includes/shortcodes/class-wcj-general-shortcodes.php:600
6284
#: includes/shortcodes/class-wcj-general-shortcodes.php:609
6285
6285
#, php-format
6286
6286
msgid "\\"%s\\" module is not enabled!"
…
…
8136
8136
msgstr ""
8137
8137
8138
#: includes/functions/wcj-functions-general.php:663
8138
#: includes/functions/wcj-functions-general.php:672
8139
8139
#: includes/settings/wcj-settings-cross-sells.php:88
8140
8140
#: includes/settings/wcj-settings-empty-cart.php:65
…
…
8142
8142
msgstr ""
8143
8143
8144
#: includes/functions/wcj-functions-general.php:664
8144
#: includes/functions/wcj-functions-general.php:673
8145
8145
msgid "Before cart table"
8146
8146
msgstr ""
8147
8147
8148
#: includes/functions/wcj-functions-general.php:665
8148
#: includes/functions/wcj-functions-general.php:674
8149
8149
msgid "Before cart contents"
8150
8150
msgstr ""
8151
8151
8152
#: includes/functions/wcj-functions-general.php:666
8152
#: includes/functions/wcj-functions-general.php:675
8153
8153
msgid "Cart contents"
8154
8154
msgstr ""
8155
8155
8156
#: includes/functions/wcj-functions-general.php:667
8156
#: includes/functions/wcj-functions-general.php:676
8157
8157
msgid "Cart coupon"
8158
8158
msgstr ""
8159
8159
8160
#: includes/functions/wcj-functions-general.php:668
8160
#: includes/functions/wcj-functions-general.php:677
8161
8161
msgid "Cart actions"
8162
8162
msgstr ""
8163
8163
8164
#: includes/functions/wcj-functions-general.php:669
8164
#: includes/functions/wcj-functions-general.php:678
8165
8165
msgid "After cart contents"
8166
8166
msgstr ""
8167
8167
8168
#: includes/functions/wcj-functions-general.php:670
8168
#: includes/functions/wcj-functions-general.php:679
8169
8169
msgid "After cart table"
8170
8170
msgstr ""
8171
8171
8172
#: includes/functions/wcj-functions-general.php:671
8172
#: includes/functions/wcj-functions-general.php:680
8173
8173
#: includes/settings/wcj-settings-cross-sells.php:89
8174
8174
msgid "Cart collaterals"
8175
8175
msgstr ""
8176
8176
8177
#: includes/functions/wcj-functions-general.php:672
8177
#: includes/functions/wcj-functions-general.php:681
8178
8178
#: includes/settings/wcj-settings-cross-sells.php:90
8179
8179
#: includes/settings/wcj-settings-empty-cart.php:74
…
…
8181
8181
msgstr ""
8182
8182
8183
#: includes/functions/wcj-functions-general.php:674
8183
#: includes/functions/wcj-functions-general.php:683
8184
8184
msgid "Before cart totals"
8185
8185
msgstr ""
8186
8186
8187
#: includes/functions/wcj-functions-general.php:675
8187
#: includes/functions/wcj-functions-general.php:684
8188
8188
#: includes/settings/wcj-settings-empty-cart.php:67
8189
8189
msgid "Cart totals: Before shipping"
8190
8190
msgstr ""
8191
8191
8192
#: includes/functions/wcj-functions-general.php:676
8192
#: includes/functions/wcj-functions-general.php:685
8193
8193
#: includes/settings/wcj-settings-empty-cart.php:68
8194
8194
msgid "Cart totals: After shipping"
8195
8195
msgstr ""
8196
8196
8197
#: includes/functions/wcj-functions-general.php:677
8197
#: includes/functions/wcj-functions-general.php:686
8198
8198
#: includes/settings/wcj-settings-empty-cart.php:69
8199
8199
msgid "Cart totals: Before order total"
8200
8200
msgstr ""
8201
8201
8202
#: includes/functions/wcj-functions-general.php:678
8202
#: includes/functions/wcj-functions-general.php:687
8203
8203
#: includes/settings/wcj-settings-empty-cart.php:70
8204
8204
msgid "Cart totals: After order total"
8205
8205
msgstr ""
8206
8206
8207
#: includes/functions/wcj-functions-general.php:679
8207
#: includes/functions/wcj-functions-general.php:688
8208
8208
msgid "Proceed to checkout"
8209
8209
msgstr ""
8210
8210
8211
#: includes/functions/wcj-functions-general.php:680
8211
#: includes/functions/wcj-functions-general.php:689
8212
8212
msgid "After cart totals"
8213
8213
msgstr ""
8214
8214
8215
#: includes/functions/wcj-functions-general.php:682
8215
#: includes/functions/wcj-functions-general.php:691
8216
8216
msgid "Before shipping calculator"
8217
8217
msgstr ""
8218
8218
8219
#: includes/functions/wcj-functions-general.php:683
8219
#: includes/functions/wcj-functions-general.php:692
8220
8220
msgid "After shipping calculator"
8221
8221
msgstr ""
8222
8222
8223
#: includes/functions/wcj-functions-general.php:685
8223
#: includes/functions/wcj-functions-general.php:694
8224
8224
msgid "If cart is empty"
8225
8225
msgstr ""
…
…
21537
21537
msgstr ""
21538
21538
21539
#: includes/shortcodes/class-wcj-input-field-shortcodes.php:62
21539
#: includes/shortcodes/class-wcj-input-field-shortcodes.php:69
21540
21540
msgid "Attribute \\"name\\" is required!"
21541
21541
msgstr ""
woocommerce-jetpack/trunk/readme.txt
r2950156
r2966325
3
3
Tags: woocommerce customization, woocommerce bundle, woocommerce product addon, woocommerce integration, ecommerce plugin
4
4
Requires at least: 5.8
5
Tested up to: 6.2.2
5
Tested up to: 6.3.1
6
6
Requires PHP: 7.2
7
Stable tag: 7.1.0
7
Stable tag: 7.1.1
8
8
License: GNU General Public License v3.0
9
9
License URI: http://www.gnu.org/licenses/gpl-3.0.html
…
…
279
279
280
280
\== Changelog ==
281
282
\= 7.1.1 13/09/2023 =
283
284
\* FIXED - Rectified the issue of Authenticated Information Disclosure through Shortcodes.
285
\* FIXED - Addressed the Cross-Site Scripting vulnerability issue associated with the Shortcodes.
286
\* WooCommerce 8.0.3 Tested
287
\* WordPress 6.3.1 Tested
281
288
282
289
\= 7.1.0 09/08/2023 =
woocommerce-jetpack/trunk/version-details.json
r2950156
r2966325
1
1
{
2
"0" : "= 7.1.0 09/08/2023 =",
3
"1" : "\* FIXED - Added Security vulnerability fixes.",
4
"2" : "\* WooCommerce 8.0.0 Tested"
2
"0" : "= 7.1.1 13/09/2023 =",
3
"1" : "\* FIXED - Rectified the issue of Authenticated Information Disclosure through Shortcodes.",
4
"2" : "\* FIXED - Addressed the Cross-Site Scripting vulnerability issue associated with the Shortcodes.",
5
"3" : "\* WooCommerce 8.0.3 Tested",
6
"4" : "\* WordPress 6.3.1 Tested"
5
7
}
woocommerce-jetpack/trunk/woocommerce-jetpack.php
r2950156
r2966325
4
4
\* Plugin URI: https://booster.io
5
5
\* Description: Supercharge your WooCommerce site with these awesome powerful features. More than 100 modules.All in one WooCommerce plugin.
6
\* Version: 7.1.0
6
\* Version: 7.1.1
7
7
\* Author: Pluggabl LLC
8
8
\* Author URI: https://booster.io
…
…
10
10
\* Domain Path: /langs
11
11
\* Copyright: © 2020 Pluggabl LLC.
12
\* WC tested up to: 8.0.0
12
\* WC tested up to: 8.0.3
13
13
\* License: GNU General Public License v3.0
14
14
\* php version 7.2
…
…
66
66
\* @since 2.4.7
67
67
\*/
68
public $version = '7.1.0';
68
public $version = '7.1.1';
69
69
70
70
/\*\*