Security
Headlines
HeadlinesLatestCVEs

Headline

CVE-2023-1917: Changeset 2896729 for powerpress – WordPress Plugin Repository

The PowerPress plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the plugin’s shortcode(s) in versions up to, and including, 10.0 due to insufficient input sanitization and output escaping on user supplied attributes. This makes it possible for authenticated attackers with contributor-level and above permissions to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. NOTE: A partial fix for the issue was introduced in version 10.0.1, and an additional patch (version 10.0.2) was released to address a workaround.

CVE
#xss#web#ios#android#apple#google#amazon#js#java#wordpress#php#auth

Legend:

Unmodified

Added

Removed

  • powerpress/trunk/class.powerpress-subscribe-widget.php

    r2808231

    r2896729

128

128

        <option value=""><?php echo \_\_('Select Post Type', 'powerpress'); ?></option>

129

129

<?php

130

 

        $post\_types = powerpress\_admin\_get\_post\_types(false);

 

130

        $post\_types = $this->powerpress\_admin\_get\_post\_types(false);

131

131

        foreach( $post\_types as $index => $label ) {

132

132

            echo '<option value="' . $label . '"'

…

…

 

251

251

        return;

252

252

    }

 

253

 

254

    function powerpress\_admin\_get\_post\_types($capability\_type = 'post')

 

255

    {

 

256

        if( !function\_exists('get\_post\_types') || !function\_exists('get\_post\_type\_object') )

 

257

            return array($capability\_type);

 

258

 

259

        $return = array();

 

260

        $post\_types = get\_post\_types();

 

261

        if (!empty($post\_types)) {

 

262

            foreach ($post\_types as $index => $post\_type) {

 

263

                if ($post\_type == 'redirect\_rule' || $post\_type == 'attachment' || $post\_type == 'nav\_menu\_item' || $post\_type == 'revision' || $post\_type == 'action')

 

264

                    continue;

 

265

                if ($capability\_type !== false) {

 

266

                    $object = get\_post\_type\_object($post\_type);

 

267

                    if ($object && $object->capability\_type == $capability\_type)

 

268

                        $return\[\] = $post\_type;

 

269

                } else {

 

270

                    $return\[\] = $post\_type;

 

271

                }

 

272

            }

 

273

        }

 

274

        return $return;

 

275

    }

253

276

}

254

277
  • powerpress/trunk/powerpress-player.php

    r2880730

    r2896729

358

358

    $embed .= '<iframe';

359

359

    //$embed .= ' class="powerpress-player-embed"';

360

 

    $embed .= ' width="'. $width .'"';

361

 

    $embed .= ' height="'. $height .'"';

362

 

    $embed .= ' src="'. $url .'"';

363

 

    $embed .= ' title="'. $iframeTitle .'"';

 

360

    $embed .= ' width="'. htmlspecialchars($width) .'"';

 

361

    $embed .= ' height="'. htmlspecialchars($height) .'"';

 

362

    $embed .= ' src="'. htmlspecialchars($url) .'"';

 

363

    $embed .= ' title="'. htmlspecialchars($iframeTitle) .'"';

364

364

    $embed .= ' frameborder="0" scrolling="no"';

365

365

    if($extension != 'mp3' && $extension != 'm4a' && $extension != 'oga')

…

…

 

1138

1138

    {

1139

1139

        $content .= '<div class="powerpress\_player" id="powerpress\_player\_'. $player\_id .'">'.PHP\_EOL\_WEB;

1140

 

        $content .= '<video width="'. $player\_width .'" height="'. $player\_height .'" controls="controls"';

 

1140

        $content .= '<video width="'. htmlspecialchars($player\_width) .'" height="'. htmlspecialchars($player\_height) .'" controls="controls"';

1141

1141

        if( $cover\_image )

1142

 

            $content .= ' poster="'. $cover\_image .'"';

 

1142

            $content .= ' poster="'. htmlspecialchars($cover\_image) .'"';

1143

1143

        if( $autoplay )

1144

1144

            $content .= ' autoplay="autoplay"';

…

…

 

1148

1148

        $content .= '>'.PHP\_EOL\_WEB;

1149

1149

        $content\_type = powerpress\_get\_contenttype($media\_url);

1150

 

        $content .='<source src="'. $media\_url .'" type="'. $content\_type .'" />';

 

1150

        $content .='<source src="'. htmlspecialchars($media\_url) .'" type="'. $content\_type .'" />';

1151

1151

       

1152

1152

        if( !empty($EpisodeData\['webm\_src'\]) )

1153

1153

        {

1154

1154

            $EpisodeData\['webm\_src'\] = powerpress\_add\_flag\_to\_redirect\_url($EpisodeData\['webm\_src'\], 'p');

1155

 

            $content .='<source src="'. $EpisodeData\['webm\_src'\] .'" type="video/webm" />';

 

1155

            $content .='<source src="'. htmlspecialchars($EpisodeData\['webm\_src'\]) .'" type="video/webm" />';

1156

1156

        }

1157

1157

       

…

…

 

1169

1169

            $webm\_src = powerpress\_add\_flag\_to\_redirect\_url($EpisodeData\['webm\_src'\], 'p');

1170

1170

        $content .= '<div class="powerpress\_player" id="powerpress\_player\_'. $player\_id .'">';

1171

 

        $content .= '<a href="'. $media\_url .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" onclick="return powerpress\_embed\_html5v(\\''.$player\_id.'\\',\\''.$media\_url.'\\',\\''. $player\_width .'\\',\\''. $player\_height .'\\', \\''. $webm\_src .'\\');" target="\_blank" style="position: relative;">';

 

1171

        $content .= '<a href="'. htmlspecialchars($media\_url) .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" onclick="return powerpress\_embed\_html5v(\\''.$player\_id.'\\',\\''.htmlspecialchars($media\_url).'\\',\\''. htmlspecialchars($player\_width) .'\\',\\''. htmlspecialchars($player\_height) .'\\', \\''. htmlspecialchars($webm\_src) .'\\');" target="\_blank" style="position: relative;">';

1172

1172

        if( !empty($EpisodeData\['custom\_play\_button'\]) ) // This currently does not apply

1173

1173

        {

1174

1174

            $cover\_image = $EpisodeData\['custom\_play\_button'\];

1175

1175

            $Settings\['poster\_play\_image'\] = false;

1176

 

            $content .= '<img class="powerpress-player-poster" src="'. $cover\_image .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" />';

 

1176

            $content .= '<img class="powerpress-player-poster" src="'. htmlspecialchars($cover\_image) .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" />';

1177

1177

        }

1178

1178

        else

1179

1179

        {

1180

 

            $content .= '<img class="powerpress-player-poster" src="'. $cover\_image .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="width: '. $player\_width .'px; height: '. $player\_height .'px;" />';

 

1180

            $content .= '<img class="powerpress-player-poster" src="'. htmlspecialchars($cover\_image) .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="width: '. htmlspecialchars($player\_width) .'px; height: '. htmlspecialchars($player\_height) .'px;" />';

1181

1181

        }

1182

1182

       

…

…

 

1193

1193

            if( $left < 0 )

1194

1194

                $left = 0;

1195

 

            $content .= '<img class="powerpress-player-play-image" src="'. $play\_image\_button\_url .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="position: absolute; bottom: '. $bottom .'px; left: '. $left .'px; border:0;" />';

 

1195

            $content .= '<img class="powerpress-player-play-image" src="'. htmlspecialchars($play\_image\_button\_url) .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="position: absolute; bottom: '. $bottom .'px; left: '. $left .'px; border:0;" />';

1196

1196

        }

1197

1197

        $content .= '</a>';

…

…

 

1201

1201

        {

1202

1202

            $content .= '<script type="text/javascript"><!--'.PHP\_EOL;

1203

 

            $content .= "powerpress\_embed\_html5v('{$player\_id}','{$media\_url}',{$player\_width},{$player\_height},'{$webm\_src}');\\n";

 

1203

            $content .= "powerpress\_embed\_html5v('{$player\_id}','" . htmlspecialchars($media\_url) . "'," . htmlspecialchars($player\_width) . "," . htmlspecialchars($player\_height) . ",'" . htmlspecialchars($webm\_src) . "');\\n";

1204

1204

            $content .= "//-->\\n";

1205

1205

            $content .= "</script>\\n";

…

…

 

1303

1303

        $content .= '<div class="powerpress\_player" id="powerpress\_player\_'. $player\_id .'">'.PHP\_EOL\_WEB;

1304

1304

        $content .= '<audio controls="controls"';

1305

 

        $content .=' src="'. $media\_url .'"';

 

1305

        $content .=' src="'. htmlspecialchars($media\_url) .'"';

1306

1306

        if( $autoplay )

1307

1307

            $content .= ' autoplay="autoplay"';

…

…

 

1329

1329

       

1330

1330

        $content .= '<div class="powerpress\_player" id="powerpress\_player\_'. $player\_id .'">';

1331

 

        $content .= '<a href="'. $media\_url .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" onclick="return powerpress\_embed\_html5a(\\''.$player\_id.'\\',\\''.$media\_url.'\\');" target="\_blank">';

 

1331

        $content .= '<a href="'. htmlspecialchars($media\_url) .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" onclick="return powerpress\_embed\_html5a(\\''.$player\_id.'\\',\\''.htmlspecialchars($media\_url).'\\');" target="\_blank">';

1332

1332

        if( $cover\_image\_default == $cover\_image )

1333

 

            $content .= '<img src="'. $cover\_image .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="border:0;" width="23px" height="24px" />';

 

1333

            $content .= '<img src="'. htmlspecialchars($cover\_image) .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="border:0;" width="23px" height="24px" />';

1334

1334

        else

1335

 

            $content .= '<img src="'. $cover\_image .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="border:0;" />';

 

1335

            $content .= '<img src="'. htmlspecialchars($cover\_image) .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="border:0;" />';

1336

1336

        $content .= '</a>';

1337

1337

        $content .= "</div>\\n";

…

…

 

1340

1340

        {

1341

1341

            $content .= '<script type="text/javascript"><!--'.PHP\_EOL;

1342

 

            $content .= "powerpress\_embed\_html5a('{$player\_id}','{$media\_url}');\\n";

 

1342

            $content .= "powerpress\_embed\_html5a('{$player\_id}','" . htmlspecialchars($media\_url) . "');\\n";

1343

1343

            $content .= "//-->\\n";

1344

1344

            $content .= "</script>\\n";

…

…

 

1419

1419

                $playerSettings\['transcriptspacing'\] = '230px';

1420

1420

1421

 

            return '<iframe src="' . $url . '" scrolling="yes" width="100%" height="'.$playerSettings\['transcriptspacing'\].'" frameborder="0" id="' . $playerID . '" class="blubrryplayer" title="' . $iframeTitle . '"></iframe>';

 

1421

            return '<iframe src="' . htmlspecialchars($url) . '" scrolling="yes" width="100%" height="'. htmlspecialchars($playerSettings\['transcriptspacing'\]).'" frameborder="0" id="' . $playerID . '" class="blubrryplayer" title="' . $iframeTitle . '"></iframe>';

1422

1422

        } else {

1423

 

            return '<iframe src="' . $url . '" scrolling="no" width="100%" height="138px" frameborder="0" id="' . $playerID . '" class="blubrryplayer" title="' . $iframeTitle . '"></iframe>';

 

1423

            return '<iframe src="' . htmlspecialchars($url) . '" scrolling="no" width="100%" height="138px" frameborder="0" id="' . $playerID . '" class="blubrryplayer" title="' . $iframeTitle . '"></iframe>';

1424

1424

        }

1425

1425

    }

…

…

 

1524

1524

    if( $include\_div )

1525

1525

        $content .= '<div class="powerpress\_player" id="powerpress\_player\_'. powerpressplayer\_get\_next\_id() .'">';

1526

 

    $content .= '<a href="'. $media\_url .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" target="\_blank" style="position: relative;">';

1527

 

    $content .= '<img src="'. $cover\_image .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="width: '. $player\_width .'px; height: '. $player\_height .'px;" />';

 

1526

    $content .= '<a href="'. htmlspecialchars($media\_url) .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" target="\_blank" style="position: relative;">';

 

1527

    $content .= '<img src="'. htmlspecialchars($cover\_image) .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="width: '. htmlspecialchars($player\_width) .'px; height: '. htmlspecialchars($player\_height) .'px;" />';

1528

1528

    if(!isset($Settings\['poster\_play\_image'\]) || $Settings\['poster\_play\_image'\] )

1529

1529

    {

…

…

 

1538

1538

        if( $left < 0 )

1539

1539

            $left = 0;

1540

 

        $content .= '<img src="'. $play\_image\_button\_url .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="position: absolute; bottom:'. $bottom .'px; left:'. $left .'px; border:0;" />';

 

1540

        $content .= '<img src="'. htmlspecialchars($play\_image\_button\_url) .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="position: absolute; bottom:'. $bottom .'px; left:'. $left .'px; border:0;" />';

1541

1541

    }

1542

1542

    $content .= '</a>';

…

…

 

1556

1556

    if( $include\_div )

1557

1557

        $content .= '<div class="powerpress\_player" id="powerpress\_player\_'. powerpressplayer\_get\_next\_id() .'">';

1558

 

    $content .= '<a href="'. $media\_url .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" target="\_blank">';

1559

 

    $content .= '<img src="'. $cover\_image .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="border:0;" />';

 

1558

    $content .= '<a href="'. htmlspecialchars($media\_url) .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" target="\_blank">';

 

1559

    $content .= '<img src="'. htmlspecialchars($cover\_image) .'" title="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_PLAY\_TEXT) .'" style="border:0;" />';

1560

1560

    $content .= '</a>';

1561

1561

    if( $include\_div )

…

…

 

1574

1574

    if( $include\_div )

1575

1575

        $content .= '<div class="powerpress\_player" id="powerpress\_player\_'. powerpressplayer\_get\_next\_id() .'">';

1576

 

    $content .= '<a href="'. $media\_url .'" title="'. htmlspecialchars(POWERPRESS\_READ\_TEXT) .'" target="\_blank">';

1577

 

    $content .= '<img src="'. $cover\_image .'" title="'. htmlspecialchars(POWERPRESS\_READ\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_READ\_TEXT) .'" style="border:0;" />';

 

1576

    $content .= '<a href="'. htmlspecialchars($media\_url) .'" title="'. htmlspecialchars(POWERPRESS\_READ\_TEXT) .'" target="\_blank">';

 

1577

    $content .= '<img src="'. htmlspecialchars($cover\_image) .'" title="'. htmlspecialchars(POWERPRESS\_READ\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_READ\_TEXT) .'" style="border:0;" />';

1578

1578

    $content .= '</a>';

1579

1579

    if( $include\_div )

…

…

 

1592

1592

    if( $include\_div )

1593

1593

        $content .= '<div class="powerpress\_player" id="powerpress\_player\_'. powerpressplayer\_get\_next\_id() .'">';

1594

 

    $content .= '<a href="'. $media\_url .'" title="'. htmlspecialchars(POWERPRESS\_READ\_TEXT) .'" target="\_blank">';

1595

 

    $content .= '<img src="'. $cover\_image .'" title="'. htmlspecialchars(POWERPRESS\_READ\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_READ\_TEXT) .'" style="border:0;" />';

 

1594

    $content .= '<a href="'. htmlspecialchars($media\_url) .'" title="'. htmlspecialchars(POWERPRESS\_READ\_TEXT) .'" target="\_blank">';

 

1595

    $content .= '<img src="'. htmlspecialchars($cover\_image) .'" title="'. htmlspecialchars(POWERPRESS\_READ\_TEXT) .'" alt="'. htmlspecialchars(POWERPRESS\_READ\_TEXT) .'" style="border:0;" />';

1596

1596

    $content .= '</a>';

1597

1597

    if( $include\_div )

…

…

 

1637

1637

        $poster\_attribute = '';

1638

1638

        if ($cover\_image)

1639

 

            $poster\_attribute = ' poster="'.$cover\_image.'"';

 

1639

            $poster\_attribute = ' poster="'.htmlspecialchars($cover\_image).'"';

1640

1640

1641

1641

        // Autoplay the video?

…

…

 

1649

1649

        $class = '';

1650

1650

        if ( !empty($Settings\['videojs\_css\_class'\]) )

1651

 

            $class = ' '. $Settings\['videojs\_css\_class'\];

 

1651

            $class = ' '. htmlspecialchars($Settings\['videojs\_css\_class'\]);

1652

1652

1653

1653

        $content .= '<div class="powerpress\_player" id="powerpress\_player\_'. $player\_id .'">';

1654

1654

1655

 

        $content .= '<video id="videojs\_player\_'. $player\_id .'" class="video-js vjs-default-skin'. $class .'" width="'. $player\_width .'" height="'. $player\_height .'"'. $poster\_attribute .' controls '. $autoplay\_attribute .' data-setup="{}">';

 

1655

        $content .= '<video id="videojs\_player\_'. $player\_id .'" class="video-js vjs-default-skin'. $class .'" width="'. htmlspecialchars($player\_width) .'" height="'. htmlspecialchars($player\_height) .'"'. $poster\_attribute .' controls '. $autoplay\_attribute .' data-setup="{}">';

1656

1656

       

1657

1657

        $content\_type = powerpress\_get\_contenttype($media\_url);

1658

1658

        if( $content\_type == 'video/x-m4v' )

1659

1659

            $content\_type = 'video/mp4'; // Mp4

1660

 

        $content .='<source src="'. $media\_url .'" type="'. $content\_type .'" />';

 

1660

        $content .='<source src="'. htmlspecialchars($media\_url) .'" type="'. $content\_type .'" />';

1661

1661

       

1662

1662

        if( !empty($EpisodeData\['webm\_src'\]) )

1663

1663

        {

1664

1664

            $EpisodeData\['webm\_src'\] = powerpress\_add\_flag\_to\_redirect\_url($EpisodeData\['webm\_src'\], 'p');

1665

 

            $content .='<source src="'. $EpisodeData\['webm\_src'\] .'" type="video/webm; codecs="vp8, vorbis" />';

 

1665

            $content .='<source src="'. htmlspecialchars($EpisodeData\['webm\_src'\]) .'" type="video/webm; codecs="vp8, vorbis" />';

1666

1666

        }

1667

1667
  • powerpress/trunk/powerpress-subscribe.php

    r2820035

    r2896729

947

947

            if( !empty($settings\['itunes\_url'\]) &&  !empty($settings\['subscribe\_feature\_apple\_shortcode'\]) ) {

948

948

                $link\_counter++;

949

 

                $html .= '<a href="'.  esc\_url( $settings\['itunes\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-itunes" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Apple Podcasts', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Apple Podcasts', 'powerpress') ) .'</a>';

 

949

                $html .= '<a href="'.  esc\_url( $settings\['itunes\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-itunes" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Apple Podcasts', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Apple Podcasts', 'powerpress') ) .'</a>';

950

950

            }

951

951

            // Google Podcasts

…

…

 

957

957

            if (!empty($settings\['subscribe\_feature\_gp\_shortcode'\])) {

958

958

                $link\_counter++;

959

 

                $html .= '<a href="' . esc\_url($googleUrl) . '" class="pp-sub-btn' . $settings\['subscribe\_widget\_shape'\] . ' pp-sub-gp" target="\_blank" title="' . esc\_attr(\_\_('Subscribe on Google Podcasts', 'powerpress')) . '"><span class="pp-sub-ic"></span>' . esc\_html(\_\_('Google Podcasts', 'powerpress')) . '</a>';

 

959

                $html .= '<a href="' . esc\_url($googleUrl) . '" class="pp-sub-btn' . htmlspecialchars($settings\['subscribe\_widget\_shape'\]) . ' pp-sub-gp" target="\_blank" title="' . esc\_attr(\_\_('Subscribe on Google Podcasts', 'powerpress')) . '"><span class="pp-sub-ic"></span>' . esc\_html(\_\_('Google Podcasts', 'powerpress')) . '</a>';

960

960

            }

961

961

…

…

 

963

963

            {

964

964

                $link\_counter++;

965

 

                $html .= '<a href="'.  esc\_url( $settings\['spotify\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-spotify" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Spotify', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Spotify', 'powerpress') ) .'</a>';

 

965

                $html .= '<a href="'.  esc\_url( $settings\['spotify\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-spotify" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Spotify', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Spotify', 'powerpress') ) .'</a>';

966

966

            }

967

967

968

968

            if( !empty($settings\['subscribe\_feature\_amazon\_shortcode'\]) &&  !empty($settings\['amazon\_url'\]) ) {

969

969

                $link\_counter++;

970

 

                $html .= '<a href="'.  esc\_url( $settings\['amazon\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-amazon" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Amazon Music', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Amazon Music', 'powerpress') ) .'</a>';

 

970

                $html .= '<a href="'.  esc\_url( $settings\['amazon\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-amazon" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Amazon Music', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Amazon Music', 'powerpress') ) .'</a>';

971

971

            }

972

972

…

…

 

974

974

                $android\_url =  $matches\[1\] . 'subscribeonandroid.com/' . $matches\[2\];

975

975

                $link\_counter++;

976

 

                $html .= '<a href="'.  esc\_url( $android\_url ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-android" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Android', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Android', 'powerpress') ) .'</a>';

 

976

                $html .= '<a href="'.  esc\_url( $android\_url ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-android" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Android', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Android', 'powerpress') ) .'</a>';

977

977

            }

978

978

979

979

            if( !empty($settings\['subscribe\_feature\_pandora\_shortcode'\]) &&  !empty($settings\['pandora\_url'\]) ) {

980

980

                $link\_counter++;

981

 

                $html .= '<a href="'.  esc\_url( $settings\['pandora\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-pandora" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Pandora', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Pandora', 'powerpress') ) .'</a>';

 

981

                $html .= '<a href="'.  esc\_url( $settings\['pandora\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-pandora" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Pandora', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Pandora', 'powerpress') ) .'</a>';

982

982

            }

983

983

984

984

            if( !empty($settings\['subscribe\_feature\_iheart\_shortcode'\]) &&  !empty($settings\['iheart\_url'\]) ) {

985

985

                $link\_counter++;

986

 

                $html .= '<a href="'.  esc\_url( $settings\['iheart\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-iheartradio" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on iHeartRadio', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('iHeartRadio', 'powerpress') ) .'</a>';

 

986

                $html .= '<a href="'.  esc\_url( $settings\['iheart\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-iheartradio" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on iHeartRadio', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('iHeartRadio', 'powerpress') ) .'</a>';

987

987

            }

988

988

…

…

 

990

990

            {

991

991

                $link\_counter++;

992

 

                $html .= '<a href="'.  esc\_url( $settings\['stitcher\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-stitcher" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Stitcher', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Stitcher', 'powerpress') ) .'</a>';

 

992

                $html .= '<a href="'.  esc\_url( $settings\['stitcher\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-stitcher" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Stitcher', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Stitcher', 'powerpress') ) .'</a>';

993

993

            }

994

994

995

995

            if( !empty($settings\['subscribe\_feature\_blubrry\_shortcode'\]) &&  !empty($settings\['blubrry\_url'\]) ) {

996

996

                $link\_counter++;

997

 

                $html .= '<a href="'.  esc\_url( $settings\['blubrry\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-blubrry" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Blubrry', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Blubrry', 'powerpress') ) .'</a>';

 

997

                $html .= '<a href="'.  esc\_url( $settings\['blubrry\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-blubrry" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Blubrry', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Blubrry', 'powerpress') ) .'</a>';

998

998

            }

999

999

1000

1000

            if( !empty($settings\['subscribe\_feature\_jiosaavn\_shortcode'\]) &&  !empty($settings\['jiosaavn\_url'\]) ) {

1001

1001

                $link\_counter++;

1002

 

                $html .= '<a href="'.  esc\_url( $settings\['jiosaavn\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-jiosaavn" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on JioSaavn', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('JioSaavn', 'powerpress') ) .'</a>';

 

1002

                $html .= '<a href="'.  esc\_url( $settings\['jiosaavn\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-jiosaavn" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on JioSaavn', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('JioSaavn', 'powerpress') ) .'</a>';

1003

1003

            }

1004

1004

1005

1005

            if( !empty($settings\['subscribe\_feature\_podchaser\_shortcode'\]) &&  !empty($settings\['podchaser\_url'\]) ) {

1006

1006

                $link\_counter++;

1007

 

                $html .= '<a href="'.  esc\_url( $settings\['podchaser\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-podchaser" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Podchaser', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Podchaser', 'powerpress') ) .'</a>';

 

1007

                $html .= '<a href="'.  esc\_url( $settings\['podchaser\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-podchaser" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Podchaser', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Podchaser', 'powerpress') ) .'</a>';

1008

1008

            }

1009

1009

1010

1010

            if( !empty($settings\['subscribe\_feature\_gaana\_shortcode'\]) &&  !empty($settings\['gaana\_url'\]) ) {

1011

1011

                $link\_counter++;

1012

 

                $html .= '<a href="'.  esc\_url( $settings\['gaana\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-gaana" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Gaana', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Gaana', 'powerpress') ) .'</a>';

 

1012

                $html .= '<a href="'.  esc\_url( $settings\['gaana\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-gaana" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Gaana', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Gaana', 'powerpress') ) .'</a>';

1013

1013

            }

1014

1014

1015

1015

            if( !empty($settings\['subscribe\_feature\_pcindex\_shortcode'\]) &&  !empty($settings\['pcindex\_url'\]) ) {

1016

1016

                $link\_counter++;

1017

 

                $html .= '<a href="'.  esc\_url( $settings\['pcindex\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-pcindex" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Podcast Index', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Podcast Index', 'powerpress') ) .'</a>';

 

1017

                $html .= '<a href="'.  esc\_url( $settings\['pcindex\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-pcindex" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Podcast Index', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Podcast Index', 'powerpress') ) .'</a>';

1018

1018

            }

1019

1019

…

…

 

1021

1021

                $link\_counter++;

1022

1022

                $email\_url =  $matches\[1\] . 'subscribebyemail.com/' . $matches\[2\];

1023

 

                $html .= '<a href="'.  esc\_url( $email\_url ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-email" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe by Email', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('by Email', 'powerpress') ) .'</a>';

 

1023

                $html .= '<a href="'.  esc\_url( $email\_url ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-email" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe by Email', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('by Email', 'powerpress') ) .'</a>';

1024

1024

            }

1025

1025

…

…

 

1027

1027

            {

1028

1028

                $link\_counter++;

1029

 

                $html .= '<a href="'.  esc\_url( $settings\['tunein\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-tunein" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on TuneIn', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('TuneIn', 'powerpress') ) .'</a>';

 

1029

                $html .= '<a href="'.  esc\_url( $settings\['tunein\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-tunein" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on TuneIn', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('TuneIn', 'powerpress') ) .'</a>';

1030

1030

            }

1031

1031

1032

1032

            if( !empty($settings\['subscribe\_feature\_deezer\_shortcode'\]) &&  !empty($settings\['deezer\_url'\]) ) {

1033

1033

                $link\_counter++;

1034

 

                $html .= '<a href="'.  esc\_url( $settings\['deezer\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-deezer" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Deezer', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Deezer', 'powerpress') ) .'</a>';

 

1034

                $html .= '<a href="'.  esc\_url( $settings\['deezer\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-deezer" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Deezer', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Deezer', 'powerpress') ) .'</a>';

1035

1035

            }

1036

1036

1037

1037

            if( !empty($settings\['subscribe\_feature\_anghami\_shortcode'\]) &&  !empty($settings\['anghami\_url'\]) ) {

1038

1038

                $link\_counter++;

1039

 

                $html .= '<a href="'.  esc\_url( $settings\['anghami\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-anghami" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Anghami', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Anghami', 'powerpress') ) .'</a>';

 

1039

                $html .= '<a href="'.  esc\_url( $settings\['anghami\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-anghami" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe on Anghami', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('Anghami', 'powerpress') ) .'</a>';

1040

1040

            }

1041

1041

…

…

 

1045

1045

            if (!empty($settings\['subscribe\_feature\_rss\_shortcode'\])) {

1046

1046

                $link\_counter++;

1047

 

                $html .= '<a href="'.  esc\_url( $settings\['feed\_url'\] ) .'" class="pp-sub-btn'.$settings\['subscribe\_widget\_shape'\].' pp-sub-rss" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe via RSS', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('RSS', 'powerpress') ) .'</a>';

 

1047

                $html .= '<a href="'.  esc\_url( $settings\['feed\_url'\] ) .'" class="pp-sub-btn'. htmlspecialchars($settings\['subscribe\_widget\_shape'\]) .' pp-sub-rss" target="\_blank" title="'.  esc\_attr( \_\_('Subscribe via RSS', 'powerpress') ) .'"><span class="pp-sub-ic"></span>'.  esc\_html( \_\_('RSS', 'powerpress') ) .'</a>';

1048

1048

            }

1049

1049
  • powerpress/trunk/powerpress.php

    r2895047

    r2896729

4

4

Plugin URI: http://create.blubrry.com/resources/powerpress/

5

5

Description: <a href="https://create.blubrry.com/resources/powerpress/" target="\_blank">Blubrry PowerPress</a> is the No. 1 Podcasting plugin for WordPress. Developed by podcasters for podcasters; features include Simple and Advanced modes, multiple audio/video player options, subscribe to podcast tools, podcast SEO features, and more! Fully supports Apple Podcasts (previously iTunes), Google Podcasts, Spotify, Stitcher, and Blubrry Podcasting directories, as well as all podcast applications and clients.

6

 

Version: 10.0

 

6

Version: 10.0.1

7

7

Author: Blubrry

8

8

Author URI: https://blubrry.com/

…

…

 

36

36

37

37

// WP\_PLUGIN\_DIR (REMEMBER TO USE THIS DEFINE IF NEEDED)

38

 

define('POWERPRESS\_VERSION', '10.0' );

 

38

define('POWERPRESS\_VERSION', '10.0.1' );

39

39

40

40

// Translation support:
  • powerpress/trunk/powerpressadmin.php

    r2895047

    r2896729

3629

3629

add\_action('admin\_head', 'powerpress\_admin\_head');

3630

3630

3631

 

// our sidebar widget throws an error in the block widget editor

3632

 

function example\_theme\_support() {

3633

 

    remove\_theme\_support( 'widgets-block-editor' );

3634

 

}

3635

 

add\_action( 'after\_setup\_theme', 'example\_theme\_support' );

3636

 

3637

3631

function powerpress\_check\_account\_verified\_popup($no\_signout\_link = false) {

3638

3632

    $link\_action\_url = admin\_url('admin.php?action=powerpress-jquery-account-verify');
  • powerpress/trunk/readme.txt

    r2895047

    r2896729

5

5

Requires PHP: 5.2

6

6

Tested up to: 6.1.1

7

 

<<<<<<< HEAD

8

 

Stable tag: 10.0

9

 

\=======

10

 

Stable tag: 9.10.5

11

 

\>>>>>>> 0299d7b62ee2e8bccfaced78b21d5895cc48006e

 

7

Stable tag: 10.0.1

12

8

Donate link: https://create.blubrry.com/resources/podcast-media-hosting/

13

9

License: GPLv2 or later

…

…

 

190

186

191

187

\== Changelog ==

 

188

\= 10.0.1 =

 

189

\* Released on 04/10/2023

 

190

\* Bugfix in suscribe widget

 

191

\* Stop disabling widget block editor

 

192

\* Security updates for shortcodes

 

193

192

194

\= 10.0 =

193

 

\* Released on 03/29/2023

 

195

\* Released on 04/06/2023

194

196

\* Network section redesign

195

197

\* New features: Add program to list, undo applicant status, delete rejected applicant

Note: See TracChangeset for help on using the changeset viewer.

Related news

WordPress PowerPress 10.0 Cross Site Scripting

WordPress PowerPress plugin versions 10.0 and below suffer from a persistent cross site scripting vulnerability.

CVE: Latest News

CVE-2023-50976: Transactions API Authorization by oleiman · Pull Request #14969 · redpanda-data/redpanda
CVE-2023-6905
CVE-2023-6903
CVE-2023-6904
CVE-2023-3907