openSUSE Commits
Threads by month
- ----- 2024 -----
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
January 2016
- 1 participants
- 1523 discussions
Hello community,
here is the log from the commit of package zypper for openSUSE:Factory checked in at 2016-01-28 17:18:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/zypper (Old)
and /work/SRC/openSUSE:Factory/.zypper.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "zypper"
Changes:
--------
--- /work/SRC/openSUSE:Factory/zypper/zypper.changes 2016-01-05 09:40:48.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.zypper.new/zypper.changes 2016-01-28 17:18:14.000000000 +0100
@@ -1,0 +2,28 @@
+Thu Jan 21 01:15:51 CET 2016 - ma(a)suse.de
+
+- Update sle-zypper-po.tar.bz2
+
+-------------------------------------------------------------------
+Thu Jan 21 01:14:12 CET 2016 - ma(a)suse.de
+
+- Update zypper-po.tar.bz2
+
+-------------------------------------------------------------------
+Wed Jan 20 15:05:47 CET 2016 - ma(a)suse.de
+
+- Enhance guessing of 'obs://' URLs on openSUSE Leap (bnc#959804)
+- Print repository content 'keywords' in repo details
+- BuildRequires: libzypp-devel >= 15.20.1
+- version 1.12.29
+
+-------------------------------------------------------------------
+Thu Jan 14 01:13:34 CET 2016 - ma(a)suse.de
+
+- Update zypper-po.tar.bz2
+
+-------------------------------------------------------------------
+Thu Jan 7 01:14:05 CET 2016 - ma(a)suse.de
+
+- Update zypper-po.tar.bz2
+
+-------------------------------------------------------------------
Old:
----
zypper-1.12.28.tar.bz2
New:
----
zypper-1.12.29.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ zypper.spec ++++++
--- /var/tmp/diff_new_pack.h8w8JC/_old 2016-01-28 17:18:15.000000000 +0100
+++ /var/tmp/diff_new_pack.h8w8JC/_new 2016-01-28 17:18:15.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package zypper
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -22,7 +22,7 @@
BuildRequires: cmake >= 2.4.6
BuildRequires: gcc-c++ >= 4.7
BuildRequires: gettext-devel >= 0.15
-BuildRequires: libzypp-devel >= 15.19.8
+BuildRequires: libzypp-devel >= 15.20.1
BuildRequires: readline-devel >= 5.1
Requires: procps
%if 0%{?suse_version}
@@ -33,7 +33,7 @@
Summary: Command line software manager using libzypp
License: GPL-2.0+
Group: System/Packages
-Version: 1.12.28
+Version: 1.12.29
Release: 0
Source: %{name}-%{version}.tar.bz2
Source1: %{name}-rpmlintrc
++++++ zypper-1.12.28.tar.bz2 -> zypper-1.12.29.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/zypper/zypper-1.12.28.tar.bz2 /work/SRC/openSUSE:Factory/.zypper.new/zypper-1.12.29.tar.bz2 differ: char 11, line 1
1
0
Hello community,
here is the log from the commit of package libzypp for openSUSE:Factory checked in at 2016-01-28 17:18:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libzypp (Old)
and /work/SRC/openSUSE:Factory/.libzypp.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libzypp"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libzypp/libzypp.changes 2016-01-05 09:40:45.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libzypp.new/libzypp.changes 2016-01-28 17:18:10.000000000 +0100
@@ -1,0 +2,23 @@
+Thu Jan 21 01:13:29 CET 2016 - ma(a)suse.de
+
+- Update zypp-po.tar.bz2
+
+-------------------------------------------------------------------
+Wed Jan 20 17:12:42 CET 2016 - ma(a)suse.de
+
+- Filter unwanted btrfs subvolumes (fixes #54, closes #55, bnc#949945)
+- RepoInfo: Provide access to repo content keywords
+- Build with boost-1.60.0
+- version 15.21.0 (19)
+
+-------------------------------------------------------------------
+Thu Jan 14 01:13:17 CET 2016 - ma(a)suse.de
+
+- Update zypp-po.tar.bz2
+
+-------------------------------------------------------------------
+Thu Jan 7 01:13:28 CET 2016 - ma(a)suse.de
+
+- Update zypp-po.tar.bz2
+
+-------------------------------------------------------------------
Old:
----
libzypp-15.20.0.tar.bz2
New:
----
libzypp-15.21.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libzypp.spec ++++++
--- /var/tmp/diff_new_pack.2uo3u8/_old 2016-01-28 17:18:11.000000000 +0100
+++ /var/tmp/diff_new_pack.2uo3u8/_new 2016-01-28 17:18:11.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libzypp
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define force_gcc_46 0
Name: libzypp
-Version: 15.20.0
+Version: 15.21.0
Release: 0
Url: git://gitorious.org/opensuse/libzypp.git
Summary: Package, Patch, Pattern, and Product Management
++++++ libzypp-15.20.0.tar.bz2 -> libzypp-15.21.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-15.20.0/VERSION.cmake new/libzypp-15.21.0/VERSION.cmake
--- old/libzypp-15.20.0/VERSION.cmake 2015-12-11 19:08:57.000000000 +0100
+++ new/libzypp-15.21.0/VERSION.cmake 2016-01-20 17:18:35.000000000 +0100
@@ -60,9 +60,9 @@
#
SET(LIBZYPP_MAJOR "15")
SET(LIBZYPP_COMPATMINOR "19")
-SET(LIBZYPP_MINOR "20")
+SET(LIBZYPP_MINOR "21")
SET(LIBZYPP_PATCH "0")
#
-# LAST RELEASED: 15.20.0 (19)
+# LAST RELEASED: 15.21.0 (19)
# (The number in parenthesis is LIBZYPP_COMPATMINOR)
#=======
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-15.20.0/package/libzypp.changes new/libzypp-15.21.0/package/libzypp.changes
--- old/libzypp-15.20.0/package/libzypp.changes 2015-12-24 01:18:47.000000000 +0100
+++ new/libzypp-15.21.0/package/libzypp.changes 2016-01-21 01:18:12.000000000 +0100
@@ -1,4 +1,27 @@
-------------------------------------------------------------------
+Thu Jan 21 01:13:29 CET 2016 - ma(a)suse.de
+
+- Update zypp-po.tar.bz2
+
+-------------------------------------------------------------------
+Wed Jan 20 17:12:42 CET 2016 - ma(a)suse.de
+
+- Filter unwanted btrfs subvolumes (fixes #54, closes #55, bnc#949945)
+- RepoInfo: Provide access to repo content keywords
+- Build with boost-1.60.0
+- version 15.21.0 (19)
+
+-------------------------------------------------------------------
+Thu Jan 14 01:13:17 CET 2016 - ma(a)suse.de
+
+- Update zypp-po.tar.bz2
+
+-------------------------------------------------------------------
+Thu Jan 7 01:13:28 CET 2016 - ma(a)suse.de
+
+- Update zypp-po.tar.bz2
+
+-------------------------------------------------------------------
Thu Dec 24 01:13:13 CET 2015 - ma(a)suse.de
- Update zypp-po.tar.bz2
Files old/libzypp-15.20.0/po/zypp-po.tar.bz2 and new/libzypp-15.21.0/po/zypp-po.tar.bz2 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-15.20.0/tests/zypp/Arch_test.cc new/libzypp-15.21.0/tests/zypp/Arch_test.cc
--- old/libzypp-15.20.0/tests/zypp/Arch_test.cc 2015-07-06 11:06:37.000000000 +0200
+++ new/libzypp-15.21.0/tests/zypp/Arch_test.cc 2016-01-18 12:07:16.000000000 +0100
@@ -11,12 +11,10 @@
#include "zypp/Arch.h"
// Boost.Test
-#include <boost/test/floating_point_comparison.hpp>
#include <boost/test/auto_unit_test.hpp>
using boost::unit_test::test_suite;
using boost::unit_test::test_case;
-using boost::test_tools::close_at_tolerance;
using namespace std;
using namespace zypp;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-15.20.0/tests/zypp/Capabilities_test.cc new/libzypp-15.21.0/tests/zypp/Capabilities_test.cc
--- old/libzypp-15.20.0/tests/zypp/Capabilities_test.cc 2015-07-06 11:06:37.000000000 +0200
+++ new/libzypp-15.21.0/tests/zypp/Capabilities_test.cc 2016-01-18 12:07:16.000000000 +0100
@@ -6,7 +6,6 @@
#include <string>
// Boost.Test
-#include <boost/test/floating_point_comparison.hpp>
#include <boost/test/auto_unit_test.hpp>
#include "TestSetup.h"
@@ -16,7 +15,6 @@
using boost::unit_test::test_suite;
using boost::unit_test::test_case;
-using boost::test_tools::close_at_tolerance;
using namespace std;
using namespace zypp;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-15.20.0/zypp/DiskUsageCounter.cc new/libzypp-15.21.0/zypp/DiskUsageCounter.cc
--- old/libzypp-15.20.0/zypp/DiskUsageCounter.cc 2015-07-06 11:06:37.000000000 +0200
+++ new/libzypp-15.21.0/zypp/DiskUsageCounter.cc 2016-01-21 14:08:43.000000000 +0100
@@ -127,6 +127,9 @@
{
DiskUsageCounter::MountPointSet ret;
+ typedef std::map<std::string, MountPoint> Btrfsfilter;
+ Btrfsfilter btrfsfilter; // see btrfs hack below
+
std::ifstream procmounts( "/proc/mounts" );
if ( !procmounts ) {
@@ -213,7 +216,7 @@
//
const char * mpunwanted[] = {
"/mnt", "/media", "/mounts", "/floppy", "/cdrom",
- "/suse", "/var/tmp", "/var/adm/mount", "/var/adm/YaST",
+ "/suse", "/tmp", "/var/tmp", "/var/adm/mount", "/var/adm/YaST",
/*last*/0/*entry*/
};
@@ -252,8 +255,10 @@
//
// check for snapshotting btrfs
//
+ bool btrfshack = false;
if ( words[2] == "btrfs" )
{
+ btrfshack = true;
if ( geteuid() != 0 )
{
DBG << "Assume snapshots on " << words[1] << ": non-root user can't check" << std::endl;
@@ -292,6 +297,25 @@
DBG << "Filter zero-sized mount point : " << l << std::endl;
continue;
}
+ if ( btrfshack )
+ {
+ // HACK:
+ // Collect just the top/1st mountpoint of each btrfs volume
+ // (by device). This filters away nested subvolumes
+ // which otherwise break per package disk usage computation.
+ // FIX: Computation must learn to handle multiple mount points
+ // contributing to the same file system.
+ MountPoint & bmp( btrfsfilter[words[0]] );
+ if ( bmp.fstype.empty() ) // 1st occurance
+ {
+ bmp = DiskUsageCounter::MountPoint( mp, words[2], sb.f_bsize,
+ ((long long)sb.f_blocks)*sb.f_bsize/1024,
+ ((long long)(sb.f_blocks - sb.f_bfree))*sb.f_bsize/1024, 0LL, hints );
+ }
+ else if ( bmp.dir > mp )
+ bmp.dir = mp;
+ continue;
+ }
ret.insert( DiskUsageCounter::MountPoint( mp, words[2], sb.f_bsize,
((long long)sb.f_blocks)*sb.f_bsize/1024,
((long long)(sb.f_blocks - sb.f_bfree))*sb.f_bsize/1024, 0LL, hints ) );
@@ -300,6 +324,10 @@
}
}
+ // collect filtered btrfs volumes
+ for ( auto && bmp : btrfsfilter )
+ ret.insert( std::move(bmp.second) );
+
return ret;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-15.20.0/zypp/RepoInfo.cc new/libzypp-15.21.0/zypp/RepoInfo.cc
--- old/libzypp-15.20.0/zypp/RepoInfo.cc 2015-10-29 15:58:02.000000000 +0100
+++ new/libzypp-15.21.0/zypp/RepoInfo.cc 2016-01-20 17:12:43.000000000 +0100
@@ -94,15 +94,18 @@
{ return !emptybaseurls && !_baseUrls.empty(); }
+ const std::set<std::string> & contentKeywords() const
+ { hasContent()/*init if not yet done*/; return _keywords.second; }
+
void addContent( const std::string & keyword_r )
- { _keywords.insert( keyword_r ); }
+ { _keywords.second.insert( keyword_r ); if ( ! hasContent() ) _keywords.first = true; }
- bool hasContent( const std::string & keyword_r ) const
+ bool hasContent() const
{
- if ( _keywords.empty() && ! metadatapath.empty() )
+ if ( !_keywords.first && ! metadatapath.empty() )
{
// HACK directly check master index file until RepoManager offers
- // some content probing ans zypepr uses it.
+ // some content probing and zypper uses it.
/////////////////////////////////////////////////////////////////
MIL << "Empty keywords...." << metadatapath << endl;
Pathname master;
@@ -112,10 +115,10 @@
xml::Reader reader( master );
while ( reader.seekToNode( 2, "content" ) )
{
- _keywords.insert( reader.nodeText().asString() );
+ _keywords.second.insert( reader.nodeText().asString() );
reader.seekToEndNode( 2, "content" );
}
- _keywords.insert( "" ); // valid content in _keywords even if empty
+ _keywords.first = true; // valid content in _keywords even if empty
}
else if ( PathInfo( (master=metadatapath/"/content") ).isFile() )
{
@@ -129,19 +132,22 @@
if ( str::split( line_r, std::back_inserter(words) ) > 1
&& words[0].length() == 12 /*"REPOKEYWORDS"*/ )
{
- this->_keywords.insert( ++words.begin(), words.end() );
+ this->_keywords.second.insert( ++words.begin(), words.end() );
}
return true; // mult. occurrances are ok.
}
return( ! str::startsWith( line_r, "META " ) ); // no need to parse into META section.
} );
- _keywords.insert( "" );
+ _keywords.first = true; // valid content in _keywords even if empty
}
/////////////////////////////////////////////////////////////////
}
- return( _keywords.find( keyword_r ) != _keywords.end() );
+ return _keywords.first;
}
+ bool hasContent( const std::string & keyword_r ) const
+ { return( hasContent() && _keywords.second.find( keyword_r ) != _keywords.second.end() ); }
+
/** Signature check result needs to be stored/retrieved from _metadatapath.
* Don't call them from outside validRepoSignature/setValidRepoSignature
*/
@@ -223,7 +229,7 @@
private:
mutable RepoVariablesReplacedUrlList _baseUrls;
- mutable std::set<std::string> _keywords;
+ mutable std::pair<FalseBool, std::set<std::string> > _keywords;
friend Impl * rwcowClone<Impl>( const Impl * rhs );
/** clone for RWCOW_pointer */
@@ -423,10 +429,15 @@
bool RepoInfo::baseUrlSet() const
{ return _pimpl->baseurl2dump(); }
+ const std::set<std::string> & RepoInfo::contentKeywords() const
+ { return _pimpl->contentKeywords(); }
void RepoInfo::addContent( const std::string & keyword_r )
{ _pimpl->addContent( keyword_r ); }
+ bool RepoInfo::hasContent() const
+ { return _pimpl->hasContent(); }
+
bool RepoInfo::hasContent( const std::string & keyword_r ) const
{ return _pimpl->hasContent( keyword_r ); }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libzypp-15.20.0/zypp/RepoInfo.h new/libzypp-15.21.0/zypp/RepoInfo.h
--- old/libzypp-15.20.0/zypp/RepoInfo.h 2015-10-29 15:42:03.000000000 +0100
+++ new/libzypp-15.21.0/zypp/RepoInfo.h 2016-01-20 17:12:43.000000000 +0100
@@ -347,6 +347,10 @@
*/
void setTargetDistribution(const std::string & targetDistribution);
+
+ /** Content keywords defined. */
+ const std::set<std::string> & contentKeywords() const;
+
/** Add content keywords */
void addContent( const std::string & keyword_r );
/** \overload add keywords from container */
@@ -359,11 +363,11 @@
{ addContentFrom( container_r.begin(), container_r.end() ); }
/** Check for content keywords.
- * Checking for an empty string returns whether content kewords are
- * known at all. They may be missing due to missing metadata in disabled
- * repos.
+ * They may be missing due to missing metadata in disabled repos.
*/
- bool hasContent( const std::string & keyword_r = std::string() ) const;
+ bool hasContent() const;
+ /** \overload check for a keywords being present */
+ bool hasContent( const std::string & keyword_r ) const;
/** \overload check for \b all keywords being present */
template <class TIterator>
bool hasContentAll( TIterator begin_r, TIterator end_r ) const
1
0
Hello community,
here is the log from the commit of package procps for openSUSE:Factory checked in at 2016-01-28 17:18:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/procps (Old)
and /work/SRC/openSUSE:Factory/.procps.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "procps"
Changes:
--------
--- /work/SRC/openSUSE:Factory/procps/procps.changes 2015-11-17 14:19:23.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.procps.new/procps.changes 2016-01-28 17:18:02.000000000 +0100
@@ -1,0 +2,8 @@
+Wed Jan 27 10:01:13 UTC 2016 - werner(a)suse.de
+
+- Remove SUSE version of pmap as this stumble over new entries
+ in processes smaps files (boo#962275)
+- Add patch procps-ng-3.3.11-pmap4suse.patch to let upstream pmap
+ behave similar to old suse pmap
+
+-------------------------------------------------------------------
Old:
----
procps-pmap-legacy.tar.bz2
New:
----
procps-ng-3.3.11-pmap4suse.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ procps.spec ++++++
--- /var/tmp/diff_new_pack.36Uclo/_old 2016-01-28 17:18:03.000000000 +0100
+++ /var/tmp/diff_new_pack.36Uclo/_new 2016-01-28 17:18:03.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package procps
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -51,7 +51,6 @@
License: GPL-2.0+ and LGPL-2.1+
Group: System/Monitoring
Source: http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-3.3…
-Source1: procps-pmap-legacy.tar.bz2
Source2: boot.sysctl
Source3: systat.xinetd
Patch0: procps-ng-3.3.9-watch.patch
@@ -78,6 +77,8 @@
Patch31: procps-ng-3.3.8-ignore-scan_unevictable_pages.patch
# PATCH-FIX-SUSE -- Avoid errno set by setlocale()
Patch32: procps-ng-3.3.10-errno.patch
+# PATCH-FEATURE-SUSE -- Let upstream pmap behave simialr to old suse pmap
+Patch33: procps-ng-3.3.11-pmap4suse.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -140,10 +141,10 @@
%patch21
%patch28
%patch31 -p1
-%patch32 -b .xy
+%patch32
+%patch33
%build
-tar --strip-components=1 -xf %{S:1}
test -s .tarball-version || echo %{version} > .tarball-version
#./autogen.sh
autoreconf
++++++ procps-ng-3.3.11-pmap4suse.patch ++++++
---
pmap.c | 46 +++++++++++++++++++++++++++++++++++-----------
1 file changed, 35 insertions(+), 11 deletions(-)
--- pmap.c
+++ pmap.c 2016-01-27 09:16:14.924460617 +0000
@@ -48,7 +48,9 @@ const char *nls_Address,
*nls_Kbytes,
*nls_Mode,
*nls_RSS,
- *nls_Dirty;
+ *nls_PSS,
+ *nls_Dirty,
+ *nls_Swap;
static void nls_initialize(void)
{
@@ -72,7 +74,9 @@ static void nls_initialize(void)
nls_Kbytes = _("Kbytes");
nls_Mode = _("Mode");
nls_RSS = _("RSS");
+ nls_PSS = _("PSS");
nls_Dirty = _("Dirty");
+ nls_Swap = _("Swap");
}
static int justify_print(const char *str, int width, int right)
@@ -140,10 +144,10 @@ static int d_option;
static int n_option;
static int N_option;
static int q_option;
-static int x_option;
+static int x_option = 1;
static int X_option;
-static int map_desc_showpath;
+static int map_desc_showpath = 1;
static unsigned shm_minor = ~0u;
@@ -521,12 +525,17 @@ static int one_proc(proc_t * p)
unsigned KLONG diff = 0;
const char *cp2 = NULL;
unsigned long long rss = 0ull;
+ unsigned long long pss = 0ull;
+ unsigned long long swap = 0ull;
unsigned long long private_dirty = 0ull;
unsigned long long shared_dirty = 0ull;
unsigned long long total_rss = 0ull;
+ unsigned long long total_pss = 0ull;
+ unsigned long long total_swap = 0ull;
unsigned long long total_private_dirty = 0ull;
unsigned long long total_shared_dirty = 0ull;
int maxw1=0, maxw2=0, maxw3=0, maxw4=0, maxw5=0;
+ int maxw6=0, maxw7=0;
/* Overkill, but who knows what is proper? The "w" prog uses
* the tty width to determine this.
@@ -555,13 +564,15 @@ static int one_proc(proc_t * p)
if (x_option) {
maxw1 = 16;
if (sizeof(KLONG) == 4) maxw1 = 8;
- maxw2 = maxw3 = maxw4 = 7;
+ maxw2 = maxw3 = maxw4 = maxw6 = maxw7 = 7;
maxw5 = 5;
if (!q_option) {
maxw1 = justify_print(nls_Address, maxw1, 0);
maxw2 = justify_print(nls_Kbytes, maxw2, 1);
maxw3 = justify_print(nls_RSS, maxw3, 1);
+ maxw6 = justify_print(nls_PSS, maxw6, 1);
maxw4 = justify_print(nls_Dirty, maxw4, 1);
+ maxw7 = justify_print(nls_Swap, maxw7, 1);
maxw5 = justify_print(nls_Mode, maxw5, 0);
justify_print(nls_Mapping, 0, 0);
}
@@ -605,6 +616,11 @@ static int one_proc(proc_t * p)
total_rss += smap_value;
continue;
}
+ if (strncmp("Pss", smap_key, 3) == 0) {
+ pss = smap_value;
+ total_pss += smap_value;
+ continue;
+ }
if (strncmp("Shared_Dirty", smap_key, 12) == 0) {
shared_dirty = smap_value;
total_shared_dirty += smap_value;
@@ -616,12 +632,15 @@ static int one_proc(proc_t * p)
continue;
}
if (strncmp("Swap", smap_key, 4) == 0) {
- /*doesn't matter as long as last */
- printf("%0*" KLF "x %*lu %*llu %*llu %*s %s\n",
+ swap = smap_value;
+ total_swap += smap_value;
+ printf("%0*" KLF "x %*lu %*llu %*llu %*llu %*llu %*s %s\n",
maxw1, start,
maxw2, (unsigned long)(diff >> 10),
maxw3, rss,
+ maxw6, pss,
maxw4, (private_dirty + shared_dirty),
+ maxw7, swap,
maxw5, perms,
cp2);
/* reset some counters */
@@ -656,7 +675,6 @@ static int one_proc(proc_t * p)
if (perms[3] == 's')
total_shared += diff;
if (perms[3] == 'p') {
- perms[3] = '-';
if (perms[1] == 'w')
total_private_writeable += diff;
else
@@ -708,17 +726,21 @@ static int one_proc(proc_t * p)
justify_print("----------------", maxw1, 0);
justify_print("-------", maxw2, 1);
justify_print("-------", maxw3, 1);
+ justify_print("-------", maxw6, 1);
justify_print("-------", maxw4, 1);
+ justify_print("-------", maxw7, 1);
printf("\n");
printf("%-*s ", maxw1, _("total kB"));
- printf("%*ld %*llu %*llu\n",
+ printf("%*ld %*llu %*llu %*llu %*llu\n",
maxw2, (total_shared +
total_private_writeable +
total_private_readonly) >> 10,
maxw3, total_rss,
+ maxw6, total_pss,
maxw4, (total_shared_dirty +
- total_private_dirty));
+ total_private_dirty),
+ maxw7, total_swap);
}
if (d_option) {
printf
@@ -1025,16 +1047,18 @@ int main(int argc, char **argv)
while ((c = getopt_long(argc, argv, "xXrdqA:hVcC:nN:p", longopts, NULL)) != -1)
switch (c) {
case 'x':
- x_option = 1;
+ x_option = !x_option;
break;
case 'X':
X_option++;
+ x_option = 0;
break;
case 'r':
xwarnx(_("option -r is ignored as SunOS compatibility"));
break;
case 'd':
- d_option = 1;
+ d_option = !d_option;
+ x_option = 0;
break;
case 'q':
q_option = 1;
1
0
Hello community,
here is the log from the commit of package gpm for openSUSE:Factory checked in at 2016-01-28 17:17:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gpm (Old)
and /work/SRC/openSUSE:Factory/.gpm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gpm"
Changes:
--------
--- /work/SRC/openSUSE:Factory/gpm/gpm.changes 2015-07-21 13:24:34.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.gpm.new/gpm.changes 2016-01-28 17:17:58.000000000 +0100
@@ -1,0 +2,14 @@
+Fri Jan 22 16:09:10 CET 2016 - pth(a)suse.de
+
+- Remove dependency on aaa_base as using %{_sysconfig} instead of
+ hardcoded /etc shuts up rpmlint.
+- Use %{buildroot} and %{optflags} insead of env vars.
+
+-------------------------------------------------------------------
+Wed Jan 13 10:54:53 CET 2016 - pth(a)suse.de
+
+- Add %post and %postun entries for libgpm2.
+- Add a current version of GPL-2.0 with valid FSF address.
+- Add gpm-fix_fsf_addess.patch to get the current FSF address into
+ gpm.h.
+-------------------------------------------------------------------
New:
----
gpl-2.0.txt
gpm-fix_fsf_addess.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gpm.spec ++++++
--- /var/tmp/diff_new_pack.rkzG4s/_old 2016-01-28 17:17:59.000000000 +0100
+++ /var/tmp/diff_new_pack.rkzG4s/_new 2016-01-28 17:17:59.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package gpm
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -31,6 +31,7 @@
Source4: README.SUSE
Source5: baselibs.conf
Source6: inputattach.c
+Source7: gpl-2.0.txt
Patch0: gpm-DESTDIR.patch
Patch4: gpm-syn_conf.patch
Patch6: gpm-conf.patch
@@ -52,6 +53,8 @@
Patch28: gpm-dependencies.patch
#PATCH-FIX-UPSTREAM Create the symlink libgpm.so
Patch29: gpm-do_create_symlink.patch
+#PATCH-FIX-UPSTREAM Copy the current licence text from gpl-2.0+ to gpm.h
+Patch30: gpm-fix_fsf_addess.patch
BuildRequires: bison
BuildRequires: libtool
BuildRequires: lzma
@@ -114,58 +117,60 @@
%patch26
%patch28
%patch29
+%patch30
cp %{S:2} %{S:3} %{S:4} .
+cp %{S:7} COPYING
%build
# This package failed when testing with -Wl,-as-needed being default.
# So we disable it here, if you want to retest, just delete this comment and the line below.
-#export SUSE_ASNEEDED=0
+#export SUSE_ASNEEDED=1
NOCONFIGURE=1 ./autogen.sh
autoreconf -fi
-CFLAGS="$RPM_OPT_FLAGS -DQUIET_LIBGPM -D_REENTRANT" \
+export CFLAGS="%{optflags} -DQUIET_LIBGPM -D_REENTRANT"
%configure --disable-static \
- --sysconfdir=/etc/gpm
-make CC="%{__cc}" %{?_smp_mflags}
-%__cc %{optflags} -o inputattach %{SOURCE6}
+ --sysconfdir=%{_sysconfdir}/gpm
+make CC=gcc %{?_smp_mflags}
+gcc %{optflags} -o inputattach %{SOURCE6}
%install
make install DESTDIR="%buildroot" ROOT=""
#
# gpm confings
-install -d $RPM_BUILD_ROOT/etc/${file/conf\/gpm-/gpm\/}
+install -d %{buildroot}%{_sysconfdir}/${file/conf\/gpm-/gpm\/}
for file in conf/gpm-* ; do
- install -d $RPM_BUILD_ROOT/etc/${file/conf\/gpm-/gpm\/}
- install -m 644 $file $RPM_BUILD_ROOT/etc/${file/conf\/gpm-/gpm\/}
+ install -d %{buildroot}%{_sysconfdir}/${file/conf\/gpm-/gpm\/}
+ install -m 644 $file %{buildroot}%{_sysconfdir}/${file/conf\/gpm-/gpm\/}
done
#
# lisp
# an updated version is part of emacs now
-#install -d $RPM_BUILD_ROOT/usr/share/emacs/site-lisp
-#install contrib/emacs/t-mouse.el* $RPM_BUILD_ROOT/usr/share/emacs/site-lisp
+#install -d %%{buildroot}/usr/share/emacs/site-lisp
+#install contrib/emacs/t-mouse.el* %%{buildroot}/usr/share/emacs/site-lisp
#
# start script
-install -m 755 -d $RPM_BUILD_ROOT/var/adm/fillup-templates
-install -m 755 -d $RPM_BUILD_ROOT/%{_unitdir}
-install -m 755 -d $RPM_BUILD_ROOT/usr/sbin
+install -m 755 -d %{buildroot}/var/adm/fillup-templates
+install -m 755 -d %{buildroot}/%{_unitdir}
+install -m 755 -d %{buildroot}/usr/sbin
install -m 755 inputattach %{buildroot}%{_sbindir}
-install -m 644 sysconfig.mouse-%{name} $RPM_BUILD_ROOT/var/adm/fillup-templates
-install -m 644 %{S:2} $RPM_BUILD_ROOT/%{_unitdir}/gpm.service
-ln -sf /sbin/service $RPM_BUILD_ROOT/usr/sbin/rcgpm
+install -m 644 sysconfig.mouse-%{name} %{buildroot}/var/adm/fillup-templates
+install -m 644 %{S:2} %{buildroot}/%{_unitdir}/gpm.service
+ln -sf %{_sbindir}/service %{buildroot}/usr/sbin/rcgpm
# there were two variables with the same value GPM_PROTOCOL and MOUSETYPE
# in SuLi 8.2. The MOUSETYPE variable better conforms with with other
# variable names MOUSEDEVICE and XMOUSETYPE name scheme, so get rid of
# the obsolete GPM_PROTOCOL variable
-if grep "^GPM_PROTOCOL=" /etc/sysconfig/mouse 1>/dev/null 2>/dev/null ; then
- if grep "^MOUSETYPE=" /etc/sysconfig/mouse 1>/dev/null 2>/dev/null ; then
+if grep "^GPM_PROTOCOL=" %{_sysconfdir}/sysconfig/mouse 1>/dev/null 2>/dev/null ; then
+ if grep "^MOUSETYPE=" %{_sysconfdir}/sysconfig/mouse 1>/dev/null 2>/dev/null ; then
# comment out the obsolete MOUSETYPE variable
- perl -pi -e "s|^(MOUSETYPE=.*)$|\#\$1 \# the variable GPM_PROTOCOL was renamed to MOUSETYPE|" /etc/sysconfig/mouse
+ perl -pi -e "s|^(MOUSETYPE=.*)$|\#\$1 \# the variable GPM_PROTOCOL was renamed to MOUSETYPE|" %%{_sysconfdir}/sysconfig/mouse
fi
# rename GPM_PROTOCOL to MOUSETYPE
- perl -pi -e "s|^GPM_PROTOCOL=(.*)$|\# the variable GPM_PROTOCOL was renamed to MOUSETYPE\nMOUSETYPE=\$1|" /etc/sysconfig/mouse
+ perl -pi -e "s|^GPM_PROTOCOL=(.*)$|\# the variable GPM_PROTOCOL was renamed to MOUSETYPE\nMOUSETYPE=\$1|" %%{_sysconfdir}/sysconfig/mouse
fi
# Do not package static library
-rm -fv $RPM_BUILD_ROOT/%{_libdir}/libgpm.a
+rm -fv %{buildroot}/%{_libdir}/libgpm.a
mkdir -p %{buildroot}/run
touch %{buildroot}/run/gpm.pid
@@ -187,14 +192,17 @@
%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
%service_del_postun gpm.service
+%post -n %lname -p /sbin/ldconfig
+%postun -n %lname -p /sbin/ldconfig
+
%files
%defattr(-,root,root)
%doc COPYING README README.gpm2 README.SUSE TODO
%doc doc/Announce doc/FAQ doc/README* doc/changelog
%{_infodir}/*
%{_mandir}/*/*
-%dir %config /etc/gpm
-%config /etc/gpm/*
+%dir %config %{_sysconfdir}/gpm
+%config %{_sysconfdir}/gpm/*
%{_unitdir}/gpm.service
%{_bindir}/*
%{_sbindir}/*
++++++ gpl-2.0.txt ++++++
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
++++++ gpm-fix_fsf_addess.patch ++++++
---
src/headers/gpm.h | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
Index: src/headers/gpm.h
===================================================================
--- src/headers/gpm.h.orig 2012-10-26 23:21:38.000000000 +0200
+++ src/headers/gpm.h 2016-01-13 13:41:20.368535392 +0100
@@ -5,19 +5,19 @@
* Copyright 1998 Ian Zimmerman <itz(a)rahul.net>
* Copyright 2002-2008 Nico Schottelius <nico-gpm2008 at schottelius.org>
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********/
#ifndef _GPM_H_
1
0
Hello community,
here is the log from the commit of package systemd for openSUSE:13.2:Update checked in at 2016-01-28 14:40:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/systemd (Old)
and /work/SRC/openSUSE:13.2:Update/.systemd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "systemd"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.fKikbK/_old 2016-01-28 14:41:00.000000000 +0100
+++ /var/tmp/diff_new_pack.fKikbK/_new 2016-01-28 14:41:00.000000000 +0100
@@ -1 +1 @@
-<link package='systemd.4042' cicount='copy' />
+<link package='systemd.4556' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package systemd-mini for openSUSE:13.2:Update checked in at 2016-01-28 14:40:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/systemd-mini (Old)
and /work/SRC/openSUSE:13.2:Update/.systemd-mini.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "systemd-mini"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.EpYdsR/_old 2016-01-28 14:40:57.000000000 +0100
+++ /var/tmp/diff_new_pack.EpYdsR/_new 2016-01-28 14:40:57.000000000 +0100
@@ -1 +1 @@
-<link package='systemd-mini.4042' cicount='copy' />
+<link package='systemd-mini.4556' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package java-1_7_0-openjdk for openSUSE:13.1:Update checked in at 2016-01-27 21:19:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.1:Update/java-1_7_0-openjdk (Old)
and /work/SRC/openSUSE:13.1:Update/.java-1_7_0-openjdk.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "java-1_7_0-openjdk"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.ADglbW/_old 2016-01-27 21:19:58.000000000 +0100
+++ /var/tmp/diff_new_pack.ADglbW/_new 2016-01-27 21:19:58.000000000 +0100
@@ -1 +1 @@
-<link package='java-1_7_0-openjdk.4116' cicount='copy' />
+<link package='java-1_7_0-openjdk.375' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package chromium for openSUSE:13.1:Update checked in at 2016-01-27 18:27:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.1:Update/chromium (Old)
and /work/SRC/openSUSE:13.1:Update/.chromium.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chromium"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.jSvI66/_old 2016-01-27 18:27:15.000000000 +0100
+++ /var/tmp/diff_new_pack.jSvI66/_new 2016-01-27 18:27:15.000000000 +0100
@@ -1 +1 @@
-<link package='chromium.4439' cicount='copy' />
+<link package='chromium.377' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package java-1_7_0-openjdk for openSUSE:13.2:Update checked in at 2016-01-27 17:36:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/java-1_7_0-openjdk (Old)
and /work/SRC/openSUSE:13.2:Update/.java-1_7_0-openjdk.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "java-1_7_0-openjdk"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.KvYlmp/_old 2016-01-27 17:36:57.000000000 +0100
+++ /var/tmp/diff_new_pack.KvYlmp/_new 2016-01-27 17:36:57.000000000 +0100
@@ -1 +1 @@
-<link package='java-1_7_0-openjdk.4117' cicount='copy' />
+<link package='java-1_7_0-openjdk.4570' cicount='copy' />
1
0
![](https://seccdn.libravatar.org/avatar/e2145bc5cf53dda95c308a3c75e8fef3.jpg?s=120&d=mm&r=g)
27 Jan '16
Hello community,
here is the log from the commit of package java-1_7_0-openjdk-bootstrap for openSUSE:13.2:Update checked in at 2016-01-27 17:36:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/java-1_7_0-openjdk-bootstrap (Old)
and /work/SRC/openSUSE:13.2:Update/.java-1_7_0-openjdk-bootstrap.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "java-1_7_0-openjdk-bootstrap"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.6clLib/_old 2016-01-27 17:36:50.000000000 +0100
+++ /var/tmp/diff_new_pack.6clLib/_new 2016-01-27 17:36:50.000000000 +0100
@@ -1 +1 @@
-<link package='java-1_7_0-openjdk-bootstrap.4117' cicount='copy' />
+<link package='java-1_7_0-openjdk-bootstrap.4570' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package patchinfo.4574 for openSUSE:13.2:Update checked in at 2016-01-27 17:12:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/patchinfo.4574 (Old)
and /work/SRC/openSUSE:13.2:Update/.patchinfo.4574.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "patchinfo.4574"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
New:
----
_patchinfo
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _patchinfo ++++++
<patchinfo incident="4574">
<issue id="962743" tracker="bnc">VUL-0: Oracle Critical Patch Update Advisory - January 2016 tracker bug</issue>
<issue id="960996" tracker="bnc">VUL-0: CVE-2015-7575: SLOTH: Security Losses from Obsolete and Truncated Transcript Hashes</issue>
<issue id="CVE-2015-7575" tracker="cve" />
<issue id="CVE-2015-8126" tracker="cve" />
<issue id="CVE-2016-0402" tracker="cve" />
<issue id="CVE-2016-0448" tracker="cve" />
<issue id="CVE-2016-0466" tracker="cve" />
<issue id="CVE-2016-0483" tracker="cve" />
<issue id="CVE-2016-0494" tracker="cve" />
<issue id="CVE-2015-8472" tracker="cve" />
<category>security</category>
<rating>critical</rating>
<packager>fstrba</packager>
<description>java-1_8_0-openjdk was updated to version 7u95 to fix 9 security issues. (bsc#962743)
- CVE-2015-7575: Further reduce use of MD5 (SLOTH) (bsc#960996)
- CVE-2015-8126: Vulnerability in the AWT component related to splashscreen displays
- CVE-2015-8472: Vulnerability in the AWT component, addressed by same fix
- CVE-2016-0402: Vulnerability in the Networking component related to URL processing
- CVE-2016-0448: Vulnerability in the JMX comonent related to attribute processing
- CVE-2016-0466: Vulnerability in the JAXP component, related to limits
- CVE-2016-0483: Vulnerability in the AWT component related to image decoding
- CVE-2016-0494: Vulnerability in 2D component related to font actions
</description>
<summary>Security update for java-1_8_0-openjdk</summary>
</patchinfo>
1
0
Hello community,
here is the log from the commit of package java-1_8_0-openjdk for openSUSE:13.2:Update checked in at 2016-01-27 17:12:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/java-1_8_0-openjdk (Old)
and /work/SRC/openSUSE:13.2:Update/.java-1_8_0-openjdk.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "java-1_8_0-openjdk"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.YPVTUM/_old 2016-01-27 17:12:29.000000000 +0100
+++ /var/tmp/diff_new_pack.YPVTUM/_new 2016-01-27 17:12:29.000000000 +0100
@@ -1 +1 @@
-<link package='java-1_8_0-openjdk.4113' cicount='copy' />
+<link package='java-1_8_0-openjdk.4574' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package xorg-x11-server for openSUSE:13.2:Update checked in at 2016-01-27 12:40:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/xorg-x11-server (Old)
and /work/SRC/openSUSE:13.2:Update/.xorg-x11-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xorg-x11-server"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.OqC2hR/_old 2016-01-27 12:40:56.000000000 +0100
+++ /var/tmp/diff_new_pack.OqC2hR/_new 2016-01-27 12:40:56.000000000 +0100
@@ -1 +1 @@
-<link package='xorg-x11-server.4521' cicount='copy' />
+<link package='xorg-x11-server.4545' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package openldap2 for openSUSE:13.1:Update checked in at 2016-01-27 07:43:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.1:Update/openldap2 (Old)
and /work/SRC/openSUSE:13.1:Update/.openldap2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openldap2"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.quPWiU/_old 2016-01-27 07:43:15.000000000 +0100
+++ /var/tmp/diff_new_pack.quPWiU/_new 2016-01-27 07:43:15.000000000 +0100
@@ -1 +1 @@
-<link package='openldap2.3937' cicount='copy' />
+<link package='openldap2.378' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package openldap2-client for openSUSE:13.1:Update checked in at 2016-01-27 07:43:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.1:Update/openldap2-client (Old)
and /work/SRC/openSUSE:13.1:Update/.openldap2-client.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openldap2-client"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.L6ZLCB/_old 2016-01-27 07:43:14.000000000 +0100
+++ /var/tmp/diff_new_pack.L6ZLCB/_new 2016-01-27 07:43:14.000000000 +0100
@@ -1 +1 @@
-<link package='openldap2-client.3937' cicount='copy' />
+<link package='openldap2-client.378' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package openldap2-client.378 for openSUSE:13.1:Update checked in at 2016-01-27 07:43:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.1:Update/openldap2-client.378 (Old)
and /work/SRC/openSUSE:13.1:Update/.openldap2-client.378.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openldap2-client.378"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
New:
----
_link
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
<link package="openldap2.378" cicount="copy"/>
1
0
Hello community,
here is the log from the commit of package akonadi-server for openSUSE:Factory checked in at 2016-01-26 17:26:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/akonadi-server (Old)
and /work/SRC/openSUSE:Factory/.akonadi-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "akonadi-server"
Changes:
--------
--- /work/SRC/openSUSE:Factory/akonadi-server/akonadi-server.changes 2016-01-23 01:05:20.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.akonadi-server.new/akonadi-server.changes 2016-01-26 17:26:04.000000000 +0100
@@ -1,0 +2,6 @@
+Tue Jan 25 16:00:35 UTC 2016 - tittiatcoke(a)gmail.com
+
+- Obsolete the old akonadi-runtime for Factory/TW due to the
+ switch to kdepim5 as default
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ akonadi-server.spec ++++++
--- /var/tmp/diff_new_pack.KrmNyg/_old 2016-01-26 17:26:04.000000000 +0100
+++ /var/tmp/diff_new_pack.KrmNyg/_new 2016-01-26 17:26:04.000000000 +0100
@@ -51,7 +51,11 @@
Requires: libqt5-sql-mysql
Requires: mysql
Suggests: mariadb
+%if 0%{?suse_version} > 1320
+Obsoletes: akonadi-runtime < %{version}
+%else
Conflicts: akonadi-runtime
+%endif
%description
This package contains the data files of Akonadi, the KDE PIM storage
@@ -62,7 +66,11 @@
Group: Development/Libraries/X11
Requires: libKF5AkonadiPrivate5 = %{version}
Requires: %{name} = %{version}
+%if 0%{?suse_version} > 1320
+Obsoletes: libakonadiprotocolinternals-devel < %{version}
+%else
Conflicts: libakonadiprotocolinternals-devel
+%endif
%description -n libKF5AkonadiPrivate-devel
This package contains development files of Akonadi, the KDE PIM storage
1
0
Hello community,
here is the log from the commit of package php5 for openSUSE:13.2:Update checked in at 2016-01-26 15:12:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/php5 (Old)
and /work/SRC/openSUSE:13.2:Update/.php5.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "php5"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.nLYbim/_old 2016-01-26 15:13:00.000000000 +0100
+++ /var/tmp/diff_new_pack.nLYbim/_new 2016-01-26 15:13:00.000000000 +0100
@@ -1 +1 @@
-<link package='php5.4029' cicount='copy' />
+<link package='php5.4542' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package chromium for openSUSE:13.2:Update checked in at 2016-01-26 14:28:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/chromium (Old)
and /work/SRC/openSUSE:13.2:Update/.chromium.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chromium"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.TXIxPm/_old 2016-01-26 14:28:54.000000000 +0100
+++ /var/tmp/diff_new_pack.TXIxPm/_new 2016-01-26 14:28:54.000000000 +0100
@@ -1,9 +1 @@
-<link package="chromium.4439" cicount="copy">
-<patches>
- <!-- <branch /> for a full copy, default case -->
- <!-- <apply name="patch" /> apply a patch on the source directory -->
- <!-- <topadd>%define build_with_feature_x 1</topadd> add a line on the top (spec file only) -->
- <!-- <add name="file.patch" /> add a patch to be applied after %setup (spec file only) -->
- <!-- <delete name="filename" /> delete a file -->
-</patches>
-</link>
+<link package='chromium.4565' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package xorg-x11-server.370 for openSUSE:13.1:Update checked in at 2016-01-26 10:41:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.1:Update/xorg-x11-server.370 (Old)
and /work/SRC/openSUSE:13.1:Update/.xorg-x11-server.370.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xorg-x11-server.370"
Changes:
--------
New Changes file:
--- /dev/null 2015-12-29 16:09:11.912035506 +0100
+++ /work/SRC/openSUSE:13.1:Update/.xorg-x11-server.370.new/xorg-x11-server.changes 2016-01-26 10:41:34.000000000 +0100
@@ -0,0 +1,3589 @@
+-------------------------------------------------------------------
+Fri Jan 15 17:08:53 UTC 2016 - eich(a)suse.com
+
+- u_Panning-Set-panning-state-in-xf86RandR12ScreenSetSize.patch
+ Fix panning when configured in xorg.conf* (boo#771521).
+
+-------------------------------------------------------------------
+Tue Nov 24 15:31:19 UTC 2015 - eich(a)suse.com
+
+- u_kdrive-UnregisterFd-Fix-off-by-one.patch
+ * Copy open file table correctly by avoiding an off-by-one error
+ (boo#867483).
+
+-------------------------------------------------------------------
+Tue Nov 10 13:00:56 UTC 2015 - eich(a)suse.com
+
+- U_os-Teach-vpnprintf-how-to-handle-.-s.patch:
+ Add support for %*.*s formats to the async safe *printf functions
+ (bsc#948713).
+
+-------------------------------------------------------------------
+Sun Sep 6 17:02:51 UTC 2015 - msrb(a)suse.com
+
+- U_expose_getmaster_to_modules.patch,
+ U_export_key_is_down_and_friends.patch
+ * Fix crash with libvnc module. (bnc#867863)
+
+-------------------------------------------------------------------
+Fri Apr 24 10:33:30 UTC 2015 - eich(a)suse.com
+
+- U_dix-Allow-zero-height-PutImage-requests.patch
+ * Fix a regression introduced by CVE-2014-8092: PutImage
+ crashes when called with 0 height (bnc#928513).
+
+-------------------------------------------------------------------
+Thu Feb 12 11:56:52 UTC 2015 - msrb(a)suse.com
+
+- U_xkb-check-strings-length-against-request-size.patch
+ * Check string lenghts in XkbSetGeometry request.
+ (bnc#915810, CVE-2015-0255)
+
+-------------------------------------------------------------------
+Wed Dec 17 12:20:20 UTC 2014 - msrb(a)suse.com
+
+- Add and update security patches. (bnc#907268, CVE-2014-8091,
+ CVE-2014-8092, CVE-2014-8093, CVE-2014-8094, CVE-2014-8095,
+ CVE-2014-8096, CVE-2014-8097, CVE-2014-8098, CVE-2014-8099,
+ CVE-2014-8100, CVE-2014-8101, CVE-2014-8102, CVE-2014-8103)
+ + U_Xi_fix_modifier_offset_in_XIPassiveGrab_swapping_function.patch
+ + U_Xi_unvalidated_lengths_in_Xinput_extension.patch
+ + U_Xv_unvalidated_lengths_in_XVideo_extension_swapped_procs.patch
+ + U_dbe_unvalidated_lengths_in_DbeSwapBuffers_calls.patch
+ + U_dix_integer_overflow_in_GetHosts.patch
+ + U_dix_integer_overflow_in_ProcPutImage.patch
+ + U_dix_integer_overflow_in_REQUEST_FIXED_SIZE.patch
+ + U_dix_integer_overflow_in_RegionSizeof.patch
+ + U_dri2_integer_overflow_in_ProcDRI2GetBuffers.patch
+ + U_glx_Add_safe__add_mul_pad.patch
+ + U_glx_Additional_paranoia_in___glXGetAnswerBuffer___GLX_GET_ANSWER_BUFFER.patch
+ + U_glx_Be_more_paranoid_about_variable_length_requests.patch
+ + U_glx_Be_more_strict_about_rejecting_invalid_image_sizes.patch
+ + U_glx_Fix_image_size_computation_for_EXT_texture_integer.patch
+ + U_glx_Fix_mask_truncation_in___glXGetAnswerBuffer.patch
+ + U_glx_Integer_overflow_protection_for_non_generated_render_requests.patch
+ + U_glx_Length_checking_for_GLXRender_requests.patch
+ + U_glx_Length_checking_for_RenderLarge_requests.patch
+ + U_glx_Length_checking_for_non_generated_single_request.patch
+ + U_glx_Length_checking_for_non_generated_vendor_private_requests.patch
+ + U_glx_Pass_remaining_request_length_into_varsize.patch
+ + U_glx_Request_length_checks_for_SetClientInfoARB.patch
+ + U_glx_Top_level_length_checking_for_swapped_VendorPrivate_requests.patch
+ + U_randr_unvalidated_lengths_in_RandR_extension_swapped_procs.patch
+ + U_render_check_request_size_before_reading_it.patch
+ + U_render_unvalidated_lengths_in_Render_extn_swapped_procs.patch
+ + U_unchecked_malloc_may_allow_unauthed_client_to_crash_Xserver.patch
+ + U_xcmisc_unvalidated_length_in_SProcXCMiscGetXIDList.patch
+ + U_xfixes_unvalidated_length_in_SProcXFixesSelectSelectionInput.patch
+ + U_dbe_Call_to_DDX_SwapBuffers_requires_address_of_int_not_unsigned_int.patch
+ + U_dix_GetHosts_bounds_check_using_wrong_pointer_value.patch
+ + U_dix_Missing_parens_in_REQUEST_FIXED_SIZE_macro.patch
+
+- U_fb_Fix_Bresenham_algorithms_for_commonly_used_small_segments.patch
+ * Fixes rendering of some icewm and xfwm themes. (bnc#908258, bnc#856931)
+
+-------------------------------------------------------------------
+Tue Apr 15 16:10:04 UTC 2014 - msrb(a)suse.com
+
+- u_dri2_fix-detection-of-wrong-prime_id-in-getscreenprime.patch
+ * Do not crash when out of range DRI_PRIME is used. (bnc#846352)
+
+-------------------------------------------------------------------
+Mon Dec 16 14:54:12 UTC 2013 - msrb(a)suse.com
+
+- u_exa-only-draw-valid-trapezoids.patch
+ * Fix possible x server crash using invalid trapezoids.
+ (bnc#853846 CVE-2013-6424)
+
+-------------------------------------------------------------------
+Fri Nov 1 13:46:06 UTC 2013 - msrb(a)suse.com
+
+- N_randr_fix_abi.patch
+ * Fixes compatibility with nvidia binary drivers. (bnc#849152)
+
+-------------------------------------------------------------------
+Mon Oct 28 08:00:16 UTC 2013 - sndirsch(a)suse.com
+
+- Update to prerelease 1.14.4-rc1 (1.14.3.901)
+ * bugfixes
+ * fixes for security issue CVE-2013-4396
+- obsoletes u_Avoid-use-after-free-in-dix-dixfonts.c-doImageText.patch
+
+-------------------------------------------------------------------
+Fri Oct 25 12:31:46 UTC 2013 - msrb(a)suse.com
+
+- Add U_randr_dont_directly_set_changed_bits_in_randr_screen.patch,
+ U_randr_report_changes_when_we_disconnect_a_GPU_slave.patch,
+ u_randr_send_rrproviderchangenotify_event.patch,
+ u_randr_send_rrresourcechangenotify_event.patch,
+ u_randr_deliver_output_and_crtc_events_of_attached_output.patch,
+ u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch
+ * Send randr 1.4 events to allow tools to react to new providers. (fate#316408, fate#316409)
+
+-------------------------------------------------------------------
+Tue Oct 15 13:07:50 UTC 2013 - sndirsch(a)suse.com
+
+- u_Avoid-use-after-free-in-dix-dixfonts.c-doImageText.patch
+ * Fixes a security issue, in which an authenticated X client
+ can cause an X server to use memory after it was freed,
+ potentially leading to crash and/or memory corruption.
+ (CVE-2013-4396, bnc#843652)
+
+-------------------------------------------------------------------
+Fri Sep 13 23:39:28 UTC 2013 - tobias.johannes.klausmann(a)mni.thm.de
+
+- Update to version 1.14.3:
+ Bugfix release. Changes all over the place.
+- Remove upstreamed patches:
+ + Patch227: u_init_framebuffer_base.patch
+
+-------------------------------------------------------------------
+Tue Sep 10 09:23:38 UTC 2013 - sndirsch(a)suse.com
+
+- removed modprobe options for NVIDIA kernel module, since these
+ have been moved to the NVIDIA packages themselves
+
+-------------------------------------------------------------------
+Fri Aug 9 15:08:34 UTC 2013 - eich(a)suse.com
+
+- Delete N_0001-Xinput-Catch-missing-configlayout-when-deleting-dev.patch:
+ This patch is no longer appicable. The code has been reworked completely
+ thus the problem fixed with this most likely no longer exists.
+- Delete N_Use-external-tool-for-creating-backtraces-on-crashes.patch:
+ This feature has multiple issues, there is no reason to keep the patch
+ around.
+
+-------------------------------------------------------------------
+Fri Aug 9 13:25:41 UTC 2013 - tobias.johannes.klausmann(a)mni.thm.de
+
+- Remove the unused Xvnc packages
+- Remove the now unused vnc macro
+- Remove the Xvnc patches:
+ + Patch17: n_VNC-Add-support-for-VNC.patch
+ + Patch18: n_VNC-Readd-timeout-when-vnc-viewer-connection-breaks.patch
+ + Patch19: n_VNC-Fix-crash-when-no-depth-translation-is-required.patch
+ + Patch20: n_VNC-Don-t-let-VNC-access-the-framebuffer-directly-an.patch
+ + Patch21: n_VNC-Enable-use-of-all-keyboard-layouts-independent-o.patch
+ + Patch22: n_VNC-Fix-crash-due-to-unset-input-device-names.patch
+ + Patch23: n_Xvnc-pthread.diff
+ + Patch24: n_VNC-Add-proto.diff
+
+-------------------------------------------------------------------
+Thu Aug 8 19:51:35 UTC 2013 - eich(a)suse.com
+
+- n_autoconf-On-Linux-give-fbdev-driver-a-higher-precedence-than-vesa.patch:
+ At SUSE we want to perfer the fbdev driver over the VESA driver
+ at autoconfiguration as it is expected that fbdev will work in
+ allmost all situations where no native driver can be found -
+ even under UEFI and with secure boot.
+ replaces: N_autoconfig_fallback_fbdev_first.diff
+
+-------------------------------------------------------------------
+Thu Aug 8 15:55:14 UTC 2013 - sndirsch(a)suse.com
+
+- removed N_vidmode-sig11.diff (fixed upstream already)
+
+-------------------------------------------------------------------
+Tue Jul 2 13:18:07 UTC 2013 - hrvoje.senjan(a)gmail.com
+
+- Update to version 1.14.2:
++ Bugfix release, changes include:
+ + dix: fix device scaling to use a [min,max[ range.
+ + dix: pre-scale x by the screen:device:resolution ratio
+ + os: Reset input buffer's 'ignoreBytes' field
+ + dix: don't overwrite proximity/focus classes
+ + dix: plug memory leak in freeing TouchClass
+ + os: Use ErrorFSigSafe from FatalError and it's friends
+ + dix: send the current axis value in DeviceChangedEvents (fdo#62321)
++++ 3392 more lines (skipped)
++++ between /dev/null
++++ and /work/SRC/openSUSE:13.1:Update/.xorg-x11-server.370.new/xorg-x11-server.changes
New:
----
N_0001-Check-harder-for-primary-PCI-device.patch
N_0001-Fix-segfault-when-killing-X-with-ctrl-alt-backspace.patch
N_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
N_bug-197858_dpms.diff
N_bug534768-prefer_local_symbols.patch
N_cache-xkbcomp-output-for-fast-start-up.patch
N_confine_to_shape.diff
N_dpms_screensaver.diff
N_driver-autoconfig.diff
N_edid_data_sanity_check.diff
N_fbdevhw.diff
N_fix-dpi-values.diff
N_fix_fglrx_screendepth_issue.patch
N_p_default-module-path.diff
N_p_xnest-ignore-getimage-errors.diff
N_randr1_1-sig11.diff
N_randr_fix_abi.patch
N_sync-fix.patch
N_xorg-server-xdmcp.patch
N_zap_warning_xserver.diff
README.updates
U_Xi_fix_modifier_offset_in_XIPassiveGrab_swapping_function.patch
U_Xi_unvalidated_lengths_in_Xinput_extension.patch
U_Xv_unvalidated_lengths_in_XVideo_extension_swapped_procs.patch
U_dbe_Call_to_DDX_SwapBuffers_requires_address_of_int_not_unsigned_int.patch
U_dbe_unvalidated_lengths_in_DbeSwapBuffers_calls.patch
U_dix-Allow-zero-height-PutImage-requests.patch
U_dix_GetHosts_bounds_check_using_wrong_pointer_value.patch
U_dix_Missing_parens_in_REQUEST_FIXED_SIZE_macro.patch
U_dix_integer_overflow_in_GetHosts.patch
U_dix_integer_overflow_in_ProcPutImage.patch
U_dix_integer_overflow_in_REQUEST_FIXED_SIZE.patch
U_dix_integer_overflow_in_RegionSizeof.patch
U_dri2_integer_overflow_in_ProcDRI2GetBuffers.patch
U_ephyr_add_output_option_support.patch
U_ephyr_enable_screen_window_placement.patch
U_export_key_is_down_and_friends.patch
U_expose_getmaster_to_modules.patch
U_fb_Fix_Bresenham_algorithms_for_commonly_used_small_segments.patch
U_glx_Add_safe__add_mul_pad.patch
U_glx_Additional_paranoia_in___glXGetAnswerBuffer___GLX_GET_ANSWER_BUFFER.patch
U_glx_Be_more_paranoid_about_variable_length_requests.patch
U_glx_Be_more_strict_about_rejecting_invalid_image_sizes.patch
U_glx_Fix_image_size_computation_for_EXT_texture_integer.patch
U_glx_Fix_mask_truncation_in___glXGetAnswerBuffer.patch
U_glx_Integer_overflow_protection_for_non_generated_render_requests.patch
U_glx_Length_checking_for_GLXRender_requests.patch
U_glx_Length_checking_for_RenderLarge_requests.patch
U_glx_Length_checking_for_non_generated_single_request.patch
U_glx_Length_checking_for_non_generated_vendor_private_requests.patch
U_glx_Pass_remaining_request_length_into_varsize.patch
U_glx_Request_length_checks_for_SetClientInfoARB.patch
U_glx_Top_level_length_checking_for_swapped_VendorPrivate_requests.patch
U_kdrive_extend_screen_option_syntax.patch
U_os-Teach-vpnprintf-how-to-handle-.-s.patch
U_randr_dont_directly_set_changed_bits_in_randr_screen.patch
U_randr_report_changes_when_we_disconnect_a_GPU_slave.patch
U_randr_unvalidated_lengths_in_RandR_extension_swapped_procs.patch
U_render_check_request_size_before_reading_it.patch
U_render_unvalidated_lengths_in_Render_extn_swapped_procs.patch
U_revert_dri2_realloc_dri2_drawable_if-pixmap_serial_changes.patch
U_unchecked_malloc_may_allow_unauthed_client_to_crash_Xserver.patch
U_xcmisc_unvalidated_length_in_SProcXCMiscGetXIDList.patch
U_xfixes_unvalidated_length_in_SProcXFixesSelectSelectionInput.patch
U_xkb-check-strings-length-against-request-size.patch
n_Xvnc-pthread.diff
n_autoconf-On-Linux-give-fbdev-driver-a-higher-precedence-than-vesa.patch
n_xorg-x11-server-rpmmacros.patch
pre_checkin.sh
sysconfig.displaymanager.template
u_Panning-Set-panning-state-in-xf86RandR12ScreenSetSize.patch
u_aarch64-support.patch
u_disable-acpi-code.patch
u_dri2_fix-detection-of-wrong-prime_id-in-getscreenprime.patch
u_exa-only-draw-valid-trapezoids.patch
u_kdrive-UnregisterFd-Fix-off-by-one.patch
u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch
u_randr_deliver_output_and_crtc_events_of_attached_output.patch
u_randr_send_rrproviderchangenotify_event.patch
u_randr_send_rrresourcechangenotify_event.patch
u_vgaHW-no-legacy.patch
u_xserver_xvfb-randr.patch
xorg-backtrace
xorg-server-1.14.3.901.tar.bz2
xorg-server-provides
xorg-x11-server.changes
xorg-x11-server.macros.in
xorg-x11-server.spec
xorgcfg.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xorg-x11-server.spec ++++++
#
# spec file for package xorg-x11-server
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: xorg-x11-server
%define dirsuffix 1.14.3.901
Summary: X
License: GPL-2.0+ and MIT
Group: System/X11/Servers/XF86_4
Source0: http://xorg.freedesktop.org/archive/individual/xserver/xorg-server-%{dirsuf…
Source1: sysconfig.displaymanager.template
Source3: README.updates
Source4: xorgcfg.tar.bz2
Source8: xorg-backtrace
# RPM Macros to be installed. The ABI Versions will be injected by configure.
Source96: xorg-x11-server.macros.in
# Source98 and Source99 are used to ensure proper ABI provides.
Source98: xorg-server-provides
Source99: pre_checkin.sh
# PATCH-FEATURE-OPENSUSE n_xorg-x11-server-rpmmacros.patch dimstar(a)opensuse.org -- Provide RPM macros to require correct ABI Versions.
Patch0: n_xorg-x11-server-rpmmacros.patch
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch2: N_p_default-module-path.diff
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch16: N_p_xnest-ignore-getimage-errors.diff
BuildRequires: Mesa-devel
BuildRequires: bison
BuildRequires: flex
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: pkgconfig(bigreqsproto) >= 1.1.0
BuildRequires: pkgconfig(damageproto) >= 1.1
BuildRequires: pkgconfig(dmx) >= 1.0.99.1
BuildRequires: pkgconfig(fixesproto) >= 4.1
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(fontenc)
BuildRequires: pkgconfig(fontsproto)
BuildRequires: pkgconfig(fontutil)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(ice)
BuildRequires: pkgconfig(inputproto) >= 1.9.99.902
BuildRequires: pkgconfig(kbproto) >= 1.0.3
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(pciaccess) >= 0.8.0
BuildRequires: pkgconfig(pixman-1) >= 0.24
BuildRequires: pkgconfig(randrproto) >= 1.2.99.3
BuildRequires: pkgconfig(renderproto) >= 0.11
BuildRequires: pkgconfig(sm)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xau)
BuildRequires: pkgconfig(xau)
BuildRequires: pkgconfig(xaw7)
BuildRequires: pkgconfig(xcmiscproto) >= 1.2.0
BuildRequires: pkgconfig(xdmcp)
BuildRequires: pkgconfig(xext) >= 1.0.99.4
BuildRequires: pkgconfig(xextproto) >= 7.1.99
BuildRequires: pkgconfig(xfixes)
BuildRequires: pkgconfig(xfont) >= 1.4.2
BuildRequires: pkgconfig(xi) >= 1.2.99.1
BuildRequires: pkgconfig(xkbfile)
BuildRequires: pkgconfig(xmu)
BuildRequires: pkgconfig(xp)
BuildRequires: pkgconfig(xpm)
BuildRequires: pkgconfig(xprintutil)
BuildRequires: pkgconfig(xproto) >= 7.0.17
BuildRequires: pkgconfig(xrender)
BuildRequires: pkgconfig(xres)
BuildRequires: pkgconfig(xt)
BuildRequires: pkgconfig(xtrans) >= 1.2.2
BuildRequires: pkgconfig(xtst) >= 1.0.99.2
BuildRequires: pkgconfig(xv)
### udev support (broken on openSUSE 11.2, see also bnc #589997)
%if 0%{?suse_version} >= 1130
BuildRequires: pkgconfig(libudev) >= 143
%endif
Version: 7.6_%{dirsuffix}
Release: 0
Url: http://xorg.freedesktop.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%ifnarch s390 s390x
Requires(pre): %fillup_prereq
%endif
Requires: pkgconfig
Requires: xkbcomp
Requires: xorg-x11-fonts-core
%ifnarch s390 s390x
Requires: libpixman-1-0 >= 0.24
%(cat %{SOURCE98})
%endif
Requires: Mesa
Provides: xorg-x11-Xvfb
Provides: xorg-x11-server-glx
Obsoletes: xorg-x11-Xvfb
Obsoletes: xorg-x11-server-glx
# Xvfb requires keyboard files as well (bnc#797124)
Requires: xkeyboard-config
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch45: N_bug-197858_dpms.diff
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch77: N_fbdevhw.diff
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch79: N_edid_data_sanity_check.diff
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch101: N_zap_warning_xserver.diff
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch103: N_confine_to_shape.diff
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch106: N_randr1_1-sig11.diff
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch112: N_fix-dpi-values.diff
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch127: N_dpms_screensaver.diff
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch143: n_autoconf-On-Linux-give-fbdev-driver-a-higher-precedence-than-vesa.patch
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch145: N_driver-autoconfig.diff
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch162: N_cache-xkbcomp-output-for-fast-start-up.patch
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch200: N_bug534768-prefer_local_symbols.patch
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch202: N_0001-Check-harder-for-primary-PCI-device.patch
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch203: N_0001-Fix-segfault-when-killing-X-with-ctrl-alt-backspace.patch
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch206: N_fix_fglrx_screendepth_issue.patch
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch211: N_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch213: N_xorg-server-xdmcp.patch
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch222: N_sync-fix.patch
Patch226: u_vgaHW-no-legacy.patch
Patch228: u_aarch64-support.patch
Patch229: u_disable-acpi-code.patch
Patch230: u_xserver_xvfb-randr.patch
Patch240: U_revert_dri2_realloc_dri2_drawable_if-pixmap_serial_changes.patch
Patch242: U_randr_dont_directly_set_changed_bits_in_randr_screen.patch
Patch243: U_randr_report_changes_when_we_disconnect_a_GPU_slave.patch
Patch244: u_randr_send_rrproviderchangenotify_event.patch
Patch245: u_randr_send_rrresourcechangenotify_event.patch
Patch246: u_randr_deliver_output_and_crtc_events_of_attached_output.patch
Patch247: u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch
Patch248: N_randr_fix_abi.patch
# PATCH-FIX-UPSTREAM u_exa-only-draw-valid-trapezoids.patch bnc#853846 msrb(a)suse.com -- Fixes possible crash of server using invalid trapezoids. 2013-12-12 patch is waiting in mailing list to be upstreamed.
Patch249: u_exa-only-draw-valid-trapezoids.patch
Patch250: u_dri2_fix-detection-of-wrong-prime_id-in-getscreenprime.patch
Patch251: U_unchecked_malloc_may_allow_unauthed_client_to_crash_Xserver.patch
Patch252: U_dix_integer_overflow_in_ProcPutImage.patch
Patch253: U_dix_integer_overflow_in_GetHosts.patch
Patch254: U_dix_integer_overflow_in_RegionSizeof.patch
Patch255: U_dix_integer_overflow_in_REQUEST_FIXED_SIZE.patch
Patch256: U_dri2_integer_overflow_in_ProcDRI2GetBuffers.patch
Patch257: U_dbe_unvalidated_lengths_in_DbeSwapBuffers_calls.patch
Patch258: U_Xi_fix_modifier_offset_in_XIPassiveGrab_swapping_function.patch
Patch259: U_Xi_unvalidated_lengths_in_Xinput_extension.patch
Patch260: U_xcmisc_unvalidated_length_in_SProcXCMiscGetXIDList.patch
Patch261: U_Xv_unvalidated_lengths_in_XVideo_extension_swapped_procs.patch
Patch262: U_randr_unvalidated_lengths_in_RandR_extension_swapped_procs.patch
Patch263: U_render_check_request_size_before_reading_it.patch
Patch264: U_render_unvalidated_lengths_in_Render_extn_swapped_procs.patch
Patch265: U_xfixes_unvalidated_length_in_SProcXFixesSelectSelectionInput.patch
Patch266: U_glx_Be_more_paranoid_about_variable_length_requests.patch
Patch267: U_glx_Be_more_strict_about_rejecting_invalid_image_sizes.patch
Patch268: U_glx_Additional_paranoia_in___glXGetAnswerBuffer___GLX_GET_ANSWER_BUFFER.patch
Patch269: U_glx_Fix_image_size_computation_for_EXT_texture_integer.patch
Patch270: U_glx_Add_safe__add_mul_pad.patch
Patch271: U_glx_Length_checking_for_GLXRender_requests.patch
Patch272: U_glx_Integer_overflow_protection_for_non_generated_render_requests.patch
Patch273: U_glx_Length_checking_for_RenderLarge_requests.patch
Patch274: U_glx_Top_level_length_checking_for_swapped_VendorPrivate_requests.patch
Patch275: U_glx_Request_length_checks_for_SetClientInfoARB.patch
Patch276: U_glx_Length_checking_for_non_generated_vendor_private_requests.patch
Patch277: U_glx_Length_checking_for_non_generated_single_request.patch
Patch278: U_glx_Pass_remaining_request_length_into_varsize.patch
Patch279: U_glx_Fix_mask_truncation_in___glXGetAnswerBuffer.patch
Patch280: U_dix_GetHosts_bounds_check_using_wrong_pointer_value.patch
Patch281: U_dix_Missing_parens_in_REQUEST_FIXED_SIZE_macro.patch
Patch282: U_dbe_Call_to_DDX_SwapBuffers_requires_address_of_int_not_unsigned_int.patch
Patch283: U_fb_Fix_Bresenham_algorithms_for_commonly_used_small_segments.patch
Patch284: U_xkb-check-strings-length-against-request-size.patch
Patch285: U_dix-Allow-zero-height-PutImage-requests.patch
Patch286: U_export_key_is_down_and_friends.patch
Patch287: U_expose_getmaster_to_modules.patch
Patch288: U_os-Teach-vpnprintf-how-to-handle-.-s.patch
Patch289: u_kdrive-UnregisterFd-Fix-off-by-one.patch
Patch290: u_Panning-Set-panning-state-in-xf86RandR12ScreenSetSize.patch
%description
This package contains the X.Org Server.
%package extra
Summary: Additional Xservers (Xdmx, Xephyr, Xnest)
Group: System/X11/Servers/XF86_4
Requires: Mesa
Requires: xkbcomp
Requires: xkeyboard-config
Requires: xorg-x11-fonts-core
Provides: xorg-x11-Xnest
Obsoletes: xorg-x11-Xnest
%description extra
This package contains additional Xservers (Xdmx, Xephyr, Xnest).
%package sdk
Summary: X
Group: System/Libraries
Requires: xorg-x11-proto-devel
Requires: xorg-x11-server
Requires: pkgconfig(fontconfig)
Requires: pkgconfig(fontenc)
Requires: pkgconfig(freetype2)
Requires: pkgconfig(ice)
Requires: pkgconfig(libdrm)
Requires: pkgconfig(sm)
Requires: pkgconfig(x11)
Requires: pkgconfig(xau)
Requires: pkgconfig(xdmcp)
Requires: pkgconfig(xext)
Requires: pkgconfig(xfixes)
Requires: pkgconfig(xkbfile)
Requires: pkgconfig(xmu)
Requires: pkgconfig(xp)
Requires: pkgconfig(xpm)
Requires: pkgconfig(xprintutil)
Requires: pkgconfig(xrender)
Requires: pkgconfig(xt)
Requires: pkgconfig(xtrans)
Requires: pkgconfig(xv)
Provides: xorg-x11-sdk
Obsoletes: xorg-x11-sdk
%description sdk
This package contains the X.Org Server SDK.
%prep
%setup -q -n xorg-server-%{dirsuffix} -a4
# Early verification if the ABI Defines are correct. Let's not waste build cycles if the Provides are wrong at the end.
sh %{SOURCE99} --verify . %{SOURCE98}
cp %{SOURCE96} .
%patch0 -p1
%patch2
%patch16 -p1
### Needs to be rebased
#%patch45 -p0
%patch77
%patch79 -p1
%patch101 -p1
%patch103
%patch106 -p1
%patch112 -p0
%patch127 -p1
%patch143 -p1
%patch145 -p0
### disabled for now
#%patch162 -p1
%patch200 -p1
%patch202 -p1
%patch203 -p1
%patch206 -p0
### disabled for now
#%patch211 -p1
%patch213 -p1
### patch222 might not be applicable anymore
#%patch222 -p1
%patch226 -p0
%patch228 -p1
%patch229 -p1
%patch230 -p1
%patch240 -p1
%patch242 -p1
%patch243 -p1
%patch244 -p1
%patch245 -p1
%patch246 -p1
%patch247 -p1
%patch248 -p1
%patch249 -p1
%patch250 -p1
%patch251 -p1
%patch252 -p1
%patch253 -p1
%patch254 -p1
%patch255 -p1
%patch256 -p1
%patch257 -p1
%patch258 -p1
%patch259 -p1
%patch260 -p1
%patch261 -p1
%patch262 -p1
%patch263 -p1
%patch264 -p1
%patch265 -p1
%patch266 -p1
%patch267 -p1
%patch268 -p1
%patch269 -p1
%patch270 -p1
%patch271 -p1
%patch272 -p1
%patch273 -p1
%patch274 -p1
%patch275 -p1
%patch276 -p1
%patch277 -p1
%patch278 -p1
%patch279 -p1
%patch280 -p1
%patch281 -p1
%patch282 -p1
%patch283 -p1
%patch284 -p1
%patch285 -p1
%patch286 -p1
%patch287 -p1
%patch288 -p1
%patch289 -p1
%patch290 -p1
%build
autoreconf -fi
%configure CFLAGS="%{optflags} -fno-strict-aliasing" \
--sysconfdir=/etc \
--enable-install-libxf86config \
--enable-xdmcp \
--enable-xdm-auth-1 \
--enable-dri \
--enable-dri2 \
--enable-dmx \
--enable-xnest \
--enable-kdrive \
--enable-kdrive-evdev \
--enable-xephyr \
--disable-xfake \
--disable-xfbdev \
--enable-record \
--enable-xcsecurity \
--with-sha1=libcrypto \
%ifarch s390 s390x
--disable-xorg \
--disable-aiglx \
%else
--enable-xorg \
%if 0%{?suse_version} > 1120
--enable-config-udev \
%endif
%endif
--with-log-dir="/var/log" \
--with-os-name="openSUSE" \
--with-os-vendor="SUSE LINUX" \
--with-fontrootdir="/usr/share/fonts" \
--with-xkb-path="/usr/share/X11/xkb" \
--with-xkb-output="/var/lib/xkb/compiled" \
--with-default-font-path="/usr/share/fonts/misc:unscaled,\
/usr/share/fonts/Type1/,/usr/share/fonts/100dpi:unscaled,\
%if 0%{?suse_version} > 1210
/usr/share/fonts/75dpi:unscaled,/usr/share/fonts/ghostscript/,\
%else
/usr/share/fonts/75dpi:unscaled,/usr/share/fonts/URW/,\
%endif
/usr/share/fonts/cyrillic:unscaled,\
/usr/share/fonts/misc/sgi:unscaled,\
/usr/share/fonts/truetype/,built-ins"
make %{?_smp_mflags}
make -C hw/kdrive %{?_smp_mflags}
%install
%make_install
make -C hw/kdrive install DESTDIR=%{buildroot}
%ifnarch s390 s390x
# remove .la files
find %{buildroot}%{_libdir}/xorg/modules/ -name "*.la" | \
xargs rm
install -m 644 hw/xfree86/parser/{xf86Parser.h,xf86Optrec.h} \
%{buildroot}%{_includedir}/xorg
# bnc #632737
chmod u-s %{buildroot}%{_bindir}/Xorg
mkdir -p %{buildroot}%{_localstatedir}/lib/X11
ln -snf ../../../usr/bin/Xorg %{buildroot}%{_localstatedir}/lib/X11/X
ln -snf ../../var/lib/X11/X %{buildroot}%{_bindir}/X
%if 0%{?suse_version} > 1120
%ifnarch s390 s390x
mkdir -p %{buildroot}%{_sysconfdir}/X11/xorg.conf.d
cp %{buildroot}/%{_datadir}/X11/xorg.conf.d/10-evdev.conf %{buildroot}%{_sysconfdir}/X11/xorg.conf.d/
%endif
%endif
mkdir -p %{buildroot}%{_libdir}/xorg/modules/updates/{fonts,input,linux,drivers,multimedia,extensions}
install -m 644 $RPM_SOURCE_DIR/README.updates %{buildroot}%{_libdir}/xorg/modules/updates
%else
rm -f %{buildroot}%{_datadir}/aclocal/*.m4
%endif
%ifarch s390 s390x
rm -f %{buildroot}%{_sysconfdir}/X11/10-evdev.conf
make -C hw/xfree86/parser
mkdir -p %{buildroot}%{_includedir}/xorg \
%{buildroot}%{_libdir}
install -m 644 hw/xfree86/parser/{xf86Parser.h,xf86Optrec.h} \
%{buildroot}%{_includedir}/xorg
install -m 644 include/list.h \
%{buildroot}%{_includedir}/xorg
if [ -f hw/xfree86/parser/.libs/libxf86config.a ] ; then
install -m 644 hw/xfree86/parser/.libs/libxf86config.a \
%{buildroot}//usr/%{_lib}
else
install -m 644 hw/xfree86/parser/libxf86config.a \
%{buildroot}//usr/%{_lib}
fi
%endif
%ifnarch s390 s390x
mkdir -p %{buildroot}%{_localstatedir}/adm/fillup-templates
install -m 644 %_sourcedir/sysconfig.displaymanager.template \
%{buildroot}%{_localstatedir}/adm/fillup-templates/sysconfig.displaymanager-%{name}
%endif
install -m 755 $RPM_SOURCE_DIR/xorg-backtrace %{buildroot}%{_bindir}/xorg-backtrace
install -D xorg-x11-server.macros %{buildroot}%{_sysconfdir}/rpm/macros.xorg-server
%post
%ifnarch s390 s390x
%{fillup_only -an displaymanager}
if [ -f etc/X11/xorg.conf ]; then
# Document how to restore previous input driver behaviour in xorg.conf files created
# on openSUSE <= 11.1
if ! grep -q "will be disabled unless 'Option \"AutoAddDevices\" \"off\"'" etc/X11/xorg.conf; then
if ! grep -q "\"AutoAddDevices\" \"off\"" etc/X11/xorg.conf; then
sed -i '
/Section "ServerFlags"/{
h
g
a\
# Uncomment the following option to reenable kbd/mouse driver input sections. \
# Otherwise evdev driver is used. \
#Option "AutoAddDevices" "off"
}
' etc/X11/xorg.conf
fi
fi
fi
%endif
exit 0
%files
%defattr(-,root,root)
%ifnarch s390 s390x
%if 0%{?suse_version} > 1120
%dir %{_sysconfdir}/X11/xorg.conf.d
%config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/10-evdev.conf
%dir %{_datadir}/X11/xorg.conf.d
%{_datadir}/X11/xorg.conf.d/10-evdev.conf
%endif
%dir %{_localstatedir}/lib/X11
%endif
%dir %{_localstatedir}/lib/xkb
%dir %{_localstatedir}/lib/xkb/compiled
%dir %{_libdir}/xorg
%{_libdir}/xorg/protocol.txt
%{_mandir}/man1/*
%exclude %{_mandir}/man1/Xdmx.1*
%exclude %{_mandir}/man1/Xephyr.1*
%exclude %{_mandir}/man1/Xnest.1*
%{_localstatedir}/lib/xkb/compiled/README.compiled
%ifnarch s390 s390x
%{_bindir}/Xorg
%{_bindir}/X
%{_bindir}/cvt
%{_bindir}/gtf
%{_libdir}/xorg/modules/
%{_mandir}/man4/*
%{_mandir}/man5/*
%{_localstatedir}/adm/fillup-templates/sysconfig.displaymanager-%{name}
%{_localstatedir}/lib/X11/X
%endif
%{_bindir}/Xvfb
%{_bindir}/xorg-backtrace
%files extra
%defattr(-,root,root)
%{_bindir}/Xephyr
%{_bindir}/Xnest
%{_bindir}/Xdmx
%{_bindir}/dmxaddinput
%{_bindir}/dmxaddscreen
%{_bindir}/dmxinfo
%{_bindir}/dmxreconfig
%{_bindir}/dmxresize
%{_bindir}/dmxrminput
%{_bindir}/dmxrmscreen
%{_bindir}/dmxtodmx
%{_bindir}/dmxwininfo
%{_bindir}/vdltodmx
%{_bindir}/xdmxconfig
%{_mandir}/man1/Xdmx.1*
%{_mandir}/man1/Xephyr.1*
%{_mandir}/man1/Xnest.1*
%files sdk
%defattr(-,root,root)
%{_includedir}/xorg/
%{_libdir}/*.a
%ifnarch s390 s390x
%exclude %{_libdir}/libxf86config.la
%{_libdir}/pkgconfig/*.pc
%{_datadir}/aclocal/*.m4
%endif
%{_sysconfdir}/rpm/macros.xorg-server
%changelog
++++++ N_0001-Check-harder-for-primary-PCI-device.patch ++++++
>From 35540106538b24ca1765e752fe9d6efc968a88fa Mon Sep 17 00:00:00 2001
From: Egbert Eich <eich(a)linux-p1mv.site>
Date: Wed, 7 Oct 2009 16:31:44 +0200
Subject: [PATCH] Check harder for primary PCI device.
Primary PCI devices are identified by checking for an 'PCIINFOCLASSES'
device which is VGA and has access to the memory bars enabled.
If there should be more than one device for which this is true
redo the check and also check if IO resoures are also enabled,
if this still doesn't turn up a unique result also check for
the presence of a BIOS rom.
================================================================================
Index: xorg-server-1.12.1/hw/xfree86/common/xf86pciBus.c
===================================================================
--- xorg-server-1.12.1.orig/hw/xfree86/common/xf86pciBus.c
+++ xorg-server-1.12.1/hw/xfree86/common/xf86pciBus.c
@@ -134,9 +134,50 @@ xf86PciProbe(void)
primaryBus.id.pci = info;
}
else {
- xf86Msg(X_NOTICE,
- "More than one possible primary device found\n");
- primaryBus.type ^= (BusType) (-1);
+ /*
+ * Ok, we found more than one possible primary device with this heuristic
+ * Now also check if IO is enabled.
+ */
+ int j;
+
+ primaryBus.type = BUS_NONE;
+ for (j = 0; j < num; j++) {
+ info = xf86PciVideoInfo[j];
+ pci_device_cfg_read_u16(info, & command, 4);
+
+ if ((command & PCI_CMD_MEM_ENABLE)
+ && (command & PCI_CMD_IO_ENABLE)
+ && (IS_VGA(info->device_class))) {
+ if (primaryBus.type == BUS_NONE) {
+ primaryBus.type = BUS_PCI;
+ primaryBus.id.pci = info;
+ } else {
+ primaryBus.type = BUS_NONE;
+ for (j = 0; j < num; j++) {
+ info = xf86PciVideoInfo[j];
+ pci_device_cfg_read_u16(info, & command, 4);
+
+ if ((command & PCI_CMD_MEM_ENABLE)
+ && (command & PCI_CMD_IO_ENABLE)
+ && (IS_VGA(info->device_class))
+ && info->rom_size) {
+ if (primaryBus.type == BUS_NONE) {
+ primaryBus.type = BUS_PCI;
+ primaryBus.id.pci = info;
+ } else {
+ xf86Msg(X_NOTICE,
+ "More than one possible primary device found\n");
+ primaryBus.type ^= (BusType)(-1);
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ break;
+
}
}
}
++++++ N_0001-Fix-segfault-when-killing-X-with-ctrl-alt-backspace.patch ++++++
Index: xorg-server-1.12.1/mi/misprite.c
===================================================================
--- xorg-server-1.12.1.orig/mi/misprite.c
+++ xorg-server-1.12.1/mi/misprite.c
@@ -378,6 +378,7 @@ miSpriteCloseScreen(int i, ScreenPtr pSc
pScreen->InstallColormap = pScreenPriv->InstallColormap;
pScreen->StoreColors = pScreenPriv->StoreColors;
+ miSpriteDisableDamage(pScreen, pScreenPriv);
DamageDestroy(pScreenPriv->pDamage);
free(pScreenPriv);
++++++ N_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch ++++++
>From d1d9d4e5f8f9ac1d22e1258759d6ee9e49c7fe90 Mon Sep 17 00:00:00 2001
From: Egbert Eich <eich(a)freedesktop.org>
Date: Fri, 9 Apr 2010 15:10:32 +0200
Subject: [PATCH] Prevent XSync Alarms from senslessly calling CheckTrigger() when inactive.
If an XSync Alarm is set to inactive there is no need to check if a trigger
needs to fire. Doing so if the counter is the IdleCounter will put the
server on 100 percent CPU load since the select timeout is set to 0.
---
xorg-server-1.8.0/Xext/sync.c | 11 +++++++++--
xorg-server-1.8.0/Xext/syncsrv.h | 1 +
2 files changed, 10 insertions(+), 2 deletions(-)
Index: xorg-server-1.8.0/Xext/sync.c
===================================================================
--- xorg-server-1.8.0.orig/Xext/sync.c
+++ xorg-server-1.8.0/Xext/sync.c
@@ -518,6 +518,10 @@ SyncAlarmTriggerFired(SyncTrigger *pTrig
pAlarm->state = XSyncAlarmInactive;
}
}
+ /* Stop server from looping! */
+ if (pAlarm->state == XSyncAlarmInactive)
+ SyncDeleteTriggerFromCounter(&pAlarm->trigger);
+
/* The AlarmNotify event has to have the "new state of the alarm"
* which we can't be sure of until this point. However, it has
* to have the "old" trigger test value. That's the reason for
@@ -730,7 +734,7 @@ SyncChangeAlarmAttributes(ClientPtr clie
XSyncCounter counter;
Mask origmask = mask;
- counter = pAlarm->trigger.pCounter ? pAlarm->trigger.pCounter->id : None;
+ counter = pAlarm->counter_id;
while (mask)
{
@@ -741,7 +745,7 @@ SyncChangeAlarmAttributes(ClientPtr clie
case XSyncCACounter:
mask &= ~XSyncCACounter;
/* sanity check in SyncInitTrigger */
- counter = *values++;
+ counter = pAlarm->counter_id = *values++;
break;
case XSyncCAValueType:
@@ -808,6 +812,14 @@ SyncChangeAlarmAttributes(ClientPtr clie
return BadMatch;
}
}
+ if (pAlarm->state == XSyncAlarmInactive) {
+ /*
+ * If we are inactive the trigger has been deleted from the counter.
+ * Persuade SyncInitTrigger() to readd it.
+ */
+ origmask |= XSyncCACounter;
+ pAlarm->trigger.pCounter = NULL;
+ }
/* postpone this until now, when we're sure nothing else can go wrong */
if ((status = SyncInitTrigger(client, &pAlarm->trigger, counter,
@@ -815,6 +827,7 @@ SyncChangeAlarmAttributes(ClientPtr clie
return status;
/* XXX spec does not really say to do this - needs clarification */
+ /* It's the only place where it is set to XSyncAlarmActive! */
pAlarm->state = XSyncAlarmActive;
return Success;
}
@@ -1617,8 +1630,10 @@ ProcSyncCreateAlarm(ClientPtr client)
pAlarm->client = client;
pAlarm->alarm_id = stuff->id;
+ pAlarm->counter_id = None;
XSyncIntToValue(&pAlarm->delta, 1L);
pAlarm->events = TRUE;
+ /* SyncChangeAlarmAttributes() changes this - no need to set this here! */
pAlarm->state = XSyncAlarmInactive;
pAlarm->pEventClients = NULL;
status = SyncChangeAlarmAttributes(client, pAlarm, vmask,
Index: xorg-server-1.8.0/Xext/syncsrv.h
===================================================================
--- xorg-server-1.8.0.orig/Xext/syncsrv.h
+++ xorg-server-1.8.0/Xext/syncsrv.h
@@ -129,6 +129,7 @@ typedef struct _SyncAlarm {
int events;
int state;
SyncAlarmClientList *pEventClients;
+ XSyncCounter counter_id;
} SyncAlarm;
typedef struct {
++++++ N_bug-197858_dpms.diff ++++++
Index: hw/xfree86/common/xf86Events.c
===================================================================
--- hw/xfree86/common/xf86Events.c.orig
+++ hw/xfree86/common/xf86Events.c
@@ -115,6 +115,7 @@ typedef struct x_IHRec {
InputHandlerProc ihproc;
pointer data;
Bool enabled;
+ Bool is_input;
struct x_IHRec *next;
} IHRec, *IHPtr;
@@ -445,9 +446,13 @@ xf86VTSwitch(void)
* Keep the order: Disable Device > LeaveVT
* EnterVT > EnableDevice
*/
- for (ih = InputHandlers; ih; ih = ih->next)
+ for (ih = InputHandlers; ih; ih = ih->next) {
+ if (ih->is_input)
xf86DisableInputHandler(ih);
- for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next) {
+ else
+ xf86DisableGeneralHandler(ih);
+ }
+ for (pInfo = xf86InputDevs; pInfo; pInfo = pInfo->next) {
if (pInfo->dev) {
xf86ReleaseKeys(pInfo->dev);
ProcessInputEvents();
@@ -486,8 +491,12 @@ xf86VTSwitch(void)
EnableDevice(pInfo->dev, TRUE);
pInfo = pInfo->next;
}
- for (ih = InputHandlers; ih; ih = ih->next)
- xf86EnableInputHandler(ih);
+ for (ih = InputHandlers; ih; ih = ih->next) {
+ if (ih->is_input)
+ xf86EnableInputHandler(ih);
+ else
+ xf86EnableGeneralHandler(ih);
+ }
xf86UnblockSIGIO(prevSIGIO);
@@ -542,8 +551,12 @@ xf86VTSwitch(void)
pInfo = pInfo->next;
}
- for (ih = InputHandlers; ih; ih = ih->next)
- xf86EnableInputHandler(ih);
+ for (ih = InputHandlers; ih; ih = ih->next) {
+ if (ih->is_input)
+ xf86EnableInputHandler(ih);
+ else
+ xf86EnableGeneralHandler(ih);
+ }
xf86UnblockSIGIO(prevSIGIO);
}
@@ -579,8 +592,10 @@ xf86AddInputHandler(int fd, InputHandler
{
IHPtr ih = addInputHandler(fd, proc, data);
- if (ih)
+ if (ih) {
AddEnabledDevice(fd);
+ ih->is_input = TRUE;
+ }
return ih;
}
++++++ N_bug534768-prefer_local_symbols.patch ++++++
Index: xorg-server-1.12.1/hw/xfree86/loader/loader.c
===================================================================
--- xorg-server-1.12.1.orig/hw/xfree86/loader/loader.c
+++ xorg-server-1.12.1/hw/xfree86/loader/loader.c
@@ -152,7 +152,7 @@ LoaderSymbol(const char *name)
return p;
if (!global_scope)
- global_scope = dlopen(NULL, DLOPEN_LAZY | DLOPEN_GLOBAL);
+ global_scope = dlopen(NULL, DLOPEN_LAZY | DLOPEN_GLOBAL | RTLD_DEEPBIND);
if (global_scope)
return dlsym(global_scope, name);
++++++ N_cache-xkbcomp-output-for-fast-start-up.patch ++++++
>From 0f70ba9d3412b17ac4e08e33e1be3c226c06ea54 Mon Sep 17 00:00:00 2001
From: Yan Li <yan.i.li(a)intel.com>
Date: Tue, 12 May 2009 17:49:07 +0800
Subject: [PATCH] XKB: cache xkbcomp output for fast start-up v5 for 1.6.1
Organization: Intel
xkbcomp outputs will be cached in files with hashed keymap as
names. This saves boot time for around 1s on commodity netbooks.
Signed-off-by: Yan Li <yan.i.li(a)intel.com>
================================================================================
--- xorg-server-1.7.99/configure.ac
+++ xorg-server-1.7.99/configure.ac
@@ -527,9 +527,9 @@
AC_ARG_WITH(xkb-path, AS_HELP_STRING([--with-xkb-path=PATH], [Path to XKB base dir (default: ${datadir}/X11/xkb)]),
[ XKBPATH="$withval" ],
[ XKBPATH="${datadir}/X11/xkb" ])
-AC_ARG_WITH(xkb-output, AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${datadir}/X11/xkb/compiled)]),
+AC_ARG_WITH(xkb-output, AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${localstatedir}/cache/xkb)]),
[ XKBOUTPUT="$withval" ],
- [ XKBOUTPUT="compiled" ])
+ [ XKBOUTPUT="${localstatedir}/cache/xkb" ])
AC_ARG_WITH(default-xkb-rules, AS_HELP_STRING([--with-default-xkb-rules=RULES],
[Keyboard ruleset (default: base/evdev)]),
[ XKB_DFLT_RULES="$withval" ],
@@ -1160,7 +1160,7 @@
dnl Make sure XKM_OUTPUT_DIR is an absolute path
XKBOUTPUT_FIRSTCHAR=`echo $XKBOUTPUT | cut -b 1`
if [[ x$XKBOUTPUT_FIRSTCHAR != x/ -a x$XKBOUTPUT_FIRSTCHAR != 'x$' ]] ; then
- XKBOUTPUT="$XKB_BASE_DIRECTORY/$XKBOUTPUT"
+ AC_MSG_ERROR([xkb-output must be an absolute path.])
fi
dnl XKM_OUTPUT_DIR (used in code) must end in / or file names get hosed
--- xorg-server-1.7.99/xkb/README.compiled
+++ xorg-server-1.7.99/xkb/README.compiled
@@ -4,10 +4,10 @@
or some other tool might destroy or replace the files in this directory,
so it is not a safe place to store compiled keymaps for long periods of
time. The default keymap for any server is usually stored in:
- X<num>-default.xkm
-where <num> is the display number of the server in question, which makes
-it possible for several servers *on the same host* to share the same
-directory.
+ server-<SHA1>.xkm
+
+where <SHA1> is the SHA1 hash of keymap source, so that compiled
+keymap of different keymap sources are stored in different files.
Unless the X server is modified, sharing this directory between servers on
different hosts could cause problems.
--- xorg-server-1.9.0/xkb/ddxLoad.c.orig 2010-07-14 22:23:17.000000000 +0200
+++ xorg-server-1.9.0/xkb/ddxLoad.c 2010-08-23 15:23:47.000000000 +0200
@@ -30,6 +30,12 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <xkb-config.h>
+#ifdef HAVE_SHA1_IN_LIBMD /* Use libmd for SHA1 */
+# include <sha1.h>
+#else /* Use OpenSSL's libcrypto */
+# include <stddef.h> /* buggy openssl/sha.h wants size_t */
+# include <openssl/sha.h>
+#endif
#include <stdio.h>
#include <ctype.h>
#include <X11/X.h>
@@ -43,24 +49,13 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#define XKBSRV_NEED_FILE_FUNCS
#include <xkbsrv.h>
#include <X11/extensions/XI.h>
+#include <errno.h>
#include "xkb.h"
#if defined(CSRG_BASED) || defined(linux) || defined(__GNU__)
#include <paths.h>
#endif
- /*
- * If XKM_OUTPUT_DIR specifies a path without a leading slash, it is
- * relative to the top-level XKB configuration directory.
- * Making the server write to a subdirectory of that directory
- * requires some work in the general case (install procedure
- * has to create links to /var or somesuch on many machines),
- * so we just compile into /usr/tmp for now.
- */
-#ifndef XKM_OUTPUT_DIR
-#define XKM_OUTPUT_DIR "compiled/"
-#endif
-
#define PRE_ERROR_MSG "\"The XKEYBOARD keymap compiler (xkbcomp) reports:\""
#define ERROR_PREFIX "\"> \""
#define POST_ERROR_MSG1 "\"Errors from xkbcomp are not fatal to the X server\""
@@ -175,6 +170,45 @@ OutputDirectory(
}
static Bool
+Sha1Asc(char sha1Asc[SHA_DIGEST_LENGTH*2+1], const char * input)
+{
+ int i;
+ unsigned char sha1[SHA_DIGEST_LENGTH];
+
+#ifdef HAVE_SHA1_IN_LIBMD /* Use libmd for SHA1 */
+ SHA1_CTX ctx;
+
+ SHA1Init (&ctx);
+ SHA1Update (&ctx, input, strlen(input));
+ SHA1Final (sha1, &ctx);
+#else /* Use OpenSSL's libcrypto */
+ SHA_CTX ctx;
+ int success;
+
+ success = SHA1_Init (&ctx);
+ if (! success)
+ return BadAlloc;
+
+ success = SHA1_Update (&ctx, input, strlen(input));
+ if (! success)
+ return BadAlloc;
+
+ success = SHA1_Final (sha1, &ctx);
+ if (! success)
+ return BadAlloc;
+#endif
+
+ /* convert sha1 to sha1_asc */
+ for(i=0; i<SHA_DIGEST_LENGTH; ++i) {
+ sprintf(sha1Asc+i*2, "%02X", sha1[i]);
+ }
+
+ return Success;
+}
+
+/* call xkbcomp and compile XKB keymap, return xkm file name in
+ nameRtrn */
+static Bool
XkbDDXCompileKeymapByNames( XkbDescPtr xkb,
XkbComponentNamesPtr names,
unsigned want,
@@ -183,7 +217,11 @@ XkbDDXCompileKeymapByNames( XkbDescPtr
int nameRtrnLen)
{
FILE * out;
- char *buf = NULL, keymap[PATH_MAX], xkm_output_dir[PATH_MAX];
+ char * buf = NULL, xkmfile[PATH_MAX], xkm_output_dir[PATH_MAX];
+ char * tmpXkmFile = NULL;
+ char * canonicalXkmFileName = NULL;
+ char sha1Asc[SHA_DIGEST_LENGTH*2+1], xkbKeyMapBuf[100*1024];
+ int ret, result;
const char *emptystring = "";
char *xkbbasedirflag = NULL;
@@ -194,15 +232,70 @@ XkbDDXCompileKeymapByNames( XkbDescPtr
/* WIN32 has no popen. The input must be stored in a file which is
used as input for xkbcomp. xkbcomp does not read from stdin. */
char tmpname[PATH_MAX];
- const char *xkmfile = tmpname;
+ const char *xkbfile = tmpname;
#else
- const char *xkmfile = "-";
+ const char *xkbfile = "-";
+#endif
+
+ /* Write keymap source (xkbfile) to memory buffer `xkbKeyMapBuf',
+ of which SHA1 is generated and used as result xkm file name */
+ memset(xkbKeyMapBuf, 0, sizeof(xkbKeyMapBuf));
+ out = fmemopen(xkbKeyMapBuf, sizeof(xkbKeyMapBuf), "w");
+ if (NULL == out) {
+ ErrorF("[xkb] Open xkbKeyMapBuf for writing failed\n");
+ return FALSE;
+ }
+ ret = XkbWriteXKBKeymapForNames(out, names, xkb, want, need);
+ if (fclose(out) !=0)
+ {
+ ErrorF("[xkb] XkbWriteXKBKeymapForNames error, perhaps xkbKeyMapBuf is too small\n");
+ return FALSE;
+ }
+#ifdef DEBUG
+ if (xkbDebugFlags) {
+ ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n");
+ fputs(xkbKeyMapBuf, stderr);
+ }
#endif
+ if (!ret) {
+ ErrorF("[xkb] Generating XKB Keymap failed, giving up compiling keymap\n");
+ return FALSE;
+ }
- snprintf(keymap, sizeof(keymap), "server-%s", display);
+ DebugF("[xkb] computing SHA1 of keymap\n");
+ if (Success == Sha1Asc(sha1Asc, xkbKeyMapBuf)) {
+ snprintf(xkmfile, sizeof(xkmfile), "server-%s", sha1Asc);
+ }
+ else {
+ ErrorF("[xkb] Computing SHA1 of keymap failed, "
+ "using display name instead as xkm file name\n");
+ snprintf(xkmfile, sizeof(xkmfile), "server-%s", display);
+ }
OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
+ /* set nameRtrn, fail if it's too small */
+ if ((strlen(xkmfile)+1 > nameRtrnLen) && nameRtrn) {
+ ErrorF("[xkb] nameRtrn too small to hold xkmfile name\n");
+ return FALSE;
+ }
+ strncpy(nameRtrn, xkmfile, nameRtrnLen);
+
+ /* if the xkm file already exists, reuse it */
+ canonicalXkmFileName = Xprintf("%s%s.xkm", xkm_output_dir, xkmfile);
+ if (access(canonicalXkmFileName, R_OK) == 0) {
+ /* yes, we can reuse the old xkm file */
+ LogMessage(X_INFO, "XKB: reuse xkmfile %s\n", canonicalXkmFileName);
+ result = TRUE;
+ goto _ret;
+ }
+ LogMessage(X_INFO, "XKB: generating xkmfile %s\n", canonicalXkmFileName);
+
+ /* continue to call xkbcomp to compile the keymap. to avoid race
+ condition, we compile it to a tmpfile then rename it to
+ xkmfile */
+
+
#ifdef WIN32
strcpy(tmpname, Win32TempDir());
strcat(tmpname, "\\xkb_XXXXXX");
@@ -225,14 +318,20 @@ XkbDDXCompileKeymapByNames( XkbDescPtr
}
}
+ if ( (tmpXkmFile = tempnam(xkm_output_dir, NULL)) == NULL ) {
+ ErrorF("[xkb] Can't generate temp xkm file name");
+ result = FALSE;
+ goto _ret;
+ }
+
buf = Xprintf("\"%s%sxkbcomp\" -w %d %s -xkm \"%s\" "
- "-em1 %s -emp %s -eml %s \"%s%s.xkm\"",
+ "-em1 %s -emp %s -eml %s \"%s\"",
xkbbindir, xkbbindirsep,
( (xkbDebugFlags < 2) ? 1 :
((xkbDebugFlags > 10) ? 10 : (int)xkbDebugFlags) ),
- xkbbasedirflag ? xkbbasedirflag : "", xkmfile,
+ xkbbasedirflag ? xkbbasedirflag : "", xkbfile,
PRE_ERROR_MSG, ERROR_PREFIX, POST_ERROR_MSG1,
- xkm_output_dir, keymap);
+ tmpXkmFile);
free(xkbbasedirflag);
@@ -240,7 +339,12 @@ XkbDDXCompileKeymapByNames( XkbDescPtr
LogMessage(X_ERROR, "XKB: Could not invoke xkbcomp: not enough memory\n");
return FALSE;
}
-
+
+ /* there's a potential race condition between calling tempnam()
+ and invoking xkbcomp to write the result file (potential temp
+ file name conflicts), but since xkbcomp is a standalone
+ program, we have to live with this */
+
#ifndef WIN32
out= Popen(buf,"w");
#else
@@ -248,31 +352,42 @@ XkbDDXCompileKeymapByNames( XkbDescPtr
#endif
if (out!=NULL) {
-#ifdef DEBUG
- if (xkbDebugFlags) {
- ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n");
- XkbWriteXKBKeymapForNames(stderr,names,xkb,want,need);
- }
-#endif
- XkbWriteXKBKeymapForNames(out,names,xkb,want,need);
+ /* write XKBKeyMapBuf to xkbcomp */
+ if (EOF==fputs(xkbKeyMapBuf, out))
+ {
+ ErrorF("[xkb] Sending keymap to xkbcomp failed\n");
+ result = FALSE;
+ goto _ret;
+ }
#ifndef WIN32
if (Pclose(out)==0)
#else
if (fclose(out)==0 && System(buf) >= 0)
#endif
{
+ /* xkbcomp success */
if (xkbDebugFlags)
DebugF("[xkb] xkb executes: %s\n",buf);
- if (nameRtrn) {
- strncpy(nameRtrn,keymap,nameRtrnLen);
- nameRtrn[nameRtrnLen-1]= '\0';
+ /* if canonicalXkmFileName already exists now, we simply
+ overwrite it, this is OK */
+ ret = rename(tmpXkmFile, canonicalXkmFileName);
+ if (0 != ret) {
+ ErrorF("[xkb] Can't rename %s to %s, error: %s\n",
+ tmpXkmFile, canonicalXkmFileName,
+ strerror(errno));
+
+ /* in case of error, don't unlink tmpXkmFile, leave it
+ for debugging */
+
+ result = FALSE;
+ goto _ret;
}
- if (buf != NULL)
- free(buf);
- return TRUE;
+
+ result = TRUE;
+ goto _ret;
}
else
- LogMessage(X_ERROR, "Error compiling keymap (%s)\n", keymap);
+ LogMessage(X_ERROR, "Error compiling keymap (%s)\n", xkbfile);
#ifdef WIN32
/* remove the temporary file */
unlink(tmpname);
@@ -289,7 +404,17 @@ XkbDDXCompileKeymapByNames( XkbDescPtr
nameRtrn[0]= '\0';
if (buf != NULL)
free(buf);
- return FALSE;
+ result = FALSE;
+
+_ret:
+ if (tmpXkmFile)
+ free(tmpXkmFile);
+ if (canonicalXkmFileName)
+ xfree(canonicalXkmFileName);
+ if (buf != NULL)
+ xfree (buf);
+
+ return result;
}
static FILE *
@@ -373,7 +498,6 @@ unsigned missing;
DebugF("Loaded XKB keymap %s, defined=0x%x\n",fileName,(*xkbRtrn)->defined);
}
fclose(file);
- (void) unlink (fileName);
return (need|want)&(~missing);
}
++++++ N_confine_to_shape.diff ++++++
--- dix/events.c.orig 2012-04-17 11:34:39.714915372 -0500
+++ dix/events.c 2012-04-17 11:26:54.735728478 -0500
@@ -671,32 +671,77 @@
{
BoxRec box;
int x = *px, y = *py;
- int incx = 1, incy = 1;
+ int nbox;
+ BoxPtr pbox;
+ int d, min = (~0U >> 1), dx2, dy2, x_r, y_r;
if (RegionContainsPoint(shape, x, y, &box))
return;
- box = *RegionExtents(shape);
- /* this is rather crude */
- do {
- x += incx;
- if (x >= box.x2) {
- incx = -1;
- x = *px - 1;
+
+ for (nbox = REGION_NUM_RECTS (shape),
+ pbox = REGION_RECTS(shape);
+ nbox--;
+ pbox++)
+ {
+ if (pbox->x1 < x && pbox->x2 > x) {
+ d = pbox->y1 - y;
+ if (d >= 0) {
+ d *= d;
+ if (d < min) {
+ *px = x;
+ *py = pbox->y1 + 1;
+ min = d;
+ }
+ } else {
+ d = pbox->y2 - y; d *= d;
+ if (d < min) {
+ *px = x;
+ *py = pbox->y2 - 1;
+ min = d;
+ }
+ }
}
- else if (x < box.x1) {
- incx = 1;
- x = *px;
- y += incy;
- if (y >= box.y2) {
- incy = -1;
- y = *py - 1;
+ else if (pbox->y1 < y && pbox->y2 > y) {
+ d = pbox->x1 - x;
+ if (d >= 0) {
+ d *= d;
+ if (d < min) {
+ *px = pbox->x1 + 1;
+ *py = y;
+ min = d;
+ }
+ } else {
+ d = pbox->x2 - x; d *= d;
+ if (d < min) {
+ *px = pbox->x2 - 1;
+ *py = y;
+ min = d;
+ }
+ }
+ } else {
+ dx2 = pbox->x1 - x;
+ if (dx2 >= 0) {
+ dx2 *= dx2;
+ x_r = pbox->x1 + 1;
+ } else {
+ dx2 = pbox->x2 - x; dx2 *= dx2;
+ x_r = pbox->x2 - 1;
+ }
+ dy2 = pbox->y1 - y;
+ if (dy2 >= 0) {
+ dy2 *= dy2;
+ y_r = pbox->y1 + 1;
+ } else {
+ dy2 = pbox->y2 - y; dy2 *= dy2;
+ y_r = pbox->y2 - 1;
+ }
+ if ((d = dx2 + dy2) < min) {
+ *px = x_r;
+ *py = y_r;
+ min = d;
}
- else if (y < box.y1)
- return; /* should never get here! */
}
- } while (!RegionContainsPoint(shape, x, y, &box));
- *px = x;
- *py = y;
+ }
}
static void
++++++ N_dpms_screensaver.diff ++++++
Index: xorg-server-1.12.1/hw/xfree86/common/xf86DPMS.c
===================================================================
--- xorg-server-1.12.1.orig/hw/xfree86/common/xf86DPMS.c
+++ xorg-server-1.12.1/hw/xfree86/common/xf86DPMS.c
@@ -151,7 +151,8 @@ DPMSSet(ClientPtr client, int level)
rc = dixSaveScreens(client, SCREEN_SAVER_FORCER, ScreenSaverActive);
if (rc != Success)
return rc;
- }
+ } else
+ dixSaveScreens(client, SCREEN_SAVER_FORCER, ScreenSaverReset);
/* For each screen, set the DPMS level */
for (i = 0; i < xf86NumScreens; i++) {
++++++ N_driver-autoconfig.diff ++++++
Index: hw/xfree86/common/xf86pciBus.c
===================================================================
--- hw/xfree86/common/xf86pciBus.c.orig
+++ hw/xfree86/common/xf86pciBus.c
@@ -1107,7 +1107,8 @@ videoPtrToDriverList(struct pci_device *
driverList[0] = "ast";
break;
case 0x1002:
- driverList[0] = "ati";
+ driverList[0] = "fglrx";
+ driverList[1] = "ati";
break;
case 0x102c:
driverList[0] = "chips";
@@ -1139,6 +1141,13 @@ videoPtrToDriverList(struct pci_device *
driverList[0] = "neomagic";
break;
case 0x10de:
+ driverList[0] = "nvidia";
+ driverList[1] = "nouveau";
+ /* GeForce 6150SE support broken (bnc #465190/544674) */
+ if (dev->device_id != 0x03D0) {
+ driverList[2] = "nv";
+ }
+ break;
case 0x12d2:
{
int idx = 0;
@@ -1150,7 +1159,8 @@ videoPtrToDriverList(struct pci_device *
break;
}
case 0x1106:
- driverList[0] = "openchrome";
+ driverList[0] = "via";
+ driverList[1] = "openchrome";
break;
case 0x1b36:
driverList[0] = "qxl";
++++++ N_edid_data_sanity_check.diff ++++++
Index: xorg-server-1.6.3.901/hw/xfree86/modes/xf86Crtc.c
================================================================================
--- xorg-server-1.7.99/hw/xfree86/modes/xf86Crtc.c
+++ xorg-server-1.7.99/hw/xfree86/modes/xf86Crtc.c
@@ -2916,8 +2916,14 @@
p->output->MonInfo->features.vsize);
if (det_mon->type == DT &&
det_mon->section.d_timings.h_size != 0 &&
- det_mon->section.d_timings.v_size != 0) {
-
+ det_mon->section.d_timings.v_size != 0 &&
+ det_mon->section.d_timings.v_size != 0 &&
+ /* some sanity checking for aspect ration */
+ ((det_mon->section.d_timings.h_size /
+ det_mon->section.d_timings.v_size) < 2) &&
+ ((det_mon->section.d_timings.v_size /
+ det_mon->section.d_timings.h_size) < 2)
+ ) {
p->output->mm_width = det_mon->section.d_timings.h_size;
p->output->mm_height = det_mon->section.d_timings.v_size;
p->ret = TRUE;
++++++ N_fbdevhw.diff ++++++
Index: hw/xfree86/fbdevhw/fbdevhw.c
===================================================================
--- hw/xfree86/fbdevhw/fbdevhw.c.orig
+++ hw/xfree86/fbdevhw/fbdevhw.c
@@ -858,9 +858,10 @@ fbdevHWDPMSSet(ScrnInfoPtr pScrn, int mo
return;
}
+ /* Novell Bug #146462 */
if (-1 == ioctl(fPtr->fd, FBIOBLANK, (void *) fbmode))
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "FBIOBLANK: %s\n", strerror(errno));
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "FBIOBLANK: %s (Screen blanking not supported by vesafb of Linux Kernel)\n", strerror(errno));
}
Bool
@@ -875,9 +876,10 @@ fbdevHWSaveScreen(ScreenPtr pScreen, int
unblank = xf86IsUnblank(mode);
+ /* Novell Bug #146462 */
if (-1 == ioctl(fPtr->fd, FBIOBLANK, (void *) (1 - unblank))) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "FBIOBLANK: %s\n", strerror(errno));
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "FBIOBLANK: %s (Screen blanking not supported by vesafb of Linux Kernel)\n", strerror(errno));
return FALSE;
}
++++++ N_fix-dpi-values.diff ++++++
Index: hw/xfree86/common/xf86Helper.c
===================================================================
--- hw/xfree86/common/xf86Helper.c.orig
+++ hw/xfree86/common/xf86Helper.c
@@ -922,12 +922,22 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int
else if (pScrn->widthmm > 0 || pScrn->heightmm > 0) {
from = X_CONFIG;
if (pScrn->widthmm > 0) {
- pScrn->xDpi =
- (int) ((double) pScrn->virtualX * MMPERINCH / pScrn->widthmm);
+ if (pScrn->modes && pScrn->modes->HDisplay > 0) {
+ pScrn->xDpi =
+ (int)((double) pScrn->modes->HDisplay * MMPERINCH / pScrn->widthmm);
+ } else {
+ pScrn->xDpi =
+ (int)((double)pScrn->virtualX * MMPERINCH / pScrn->widthmm);
+ }
}
if (pScrn->heightmm > 0) {
- pScrn->yDpi =
- (int) ((double) pScrn->virtualY * MMPERINCH / pScrn->heightmm);
+ if (pScrn->modes && pScrn->modes->VDisplay > 0) {
+ pScrn->yDpi =
+ (int)((double)pScrn->modes->VDisplay * MMPERINCH / pScrn->heightmm);
+ } else {
+ pScrn->yDpi =
+ (int)((double)pScrn->virtualY * MMPERINCH / pScrn->heightmm);
+ }
}
if (pScrn->xDpi > 0 && pScrn->yDpi <= 0)
pScrn->yDpi = pScrn->xDpi;
@@ -966,12 +976,22 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int
pScrn->widthmm = ddcWidthmm;
pScrn->heightmm = ddcHeightmm;
if (pScrn->widthmm > 0) {
- pScrn->xDpi =
- (int) ((double) pScrn->virtualX * MMPERINCH / pScrn->widthmm);
+ if (pScrn->modes && pScrn->modes->HDisplay > 0) {
+ pScrn->xDpi =
+ (int)((double) pScrn->modes->HDisplay * MMPERINCH / pScrn->widthmm);
+ } else {
+ pScrn->xDpi =
+ (int)((double)pScrn->virtualX * MMPERINCH / pScrn->widthmm);
+ }
}
if (pScrn->heightmm > 0) {
- pScrn->yDpi =
- (int) ((double) pScrn->virtualY * MMPERINCH / pScrn->heightmm);
+ if (pScrn->modes && pScrn->modes->VDisplay > 0) {
+ pScrn->yDpi =
+ (int)((double)pScrn->modes->VDisplay * MMPERINCH / pScrn->heightmm);
+ } else {
+ pScrn->yDpi =
+ (int)((double)pScrn->virtualY * MMPERINCH / pScrn->heightmm);
+ }
}
if (pScrn->xDpi > 0 && pScrn->yDpi <= 0)
pScrn->yDpi = pScrn->xDpi;
++++++ N_fix_fglrx_screendepth_issue.patch ++++++
Index: hw/xfree86/common/xf86AutoConfig.c
===================================================================
--- hw/xfree86/common/xf86AutoConfig.c.orig
+++ hw/xfree86/common/xf86AutoConfig.c
@@ -75,6 +75,13 @@
"\tDevice\t" BUILTIN_DEVICE_NAME "\n" \
"EndSection\n\n"
+#define BUILTIN_SCREEN_SECTION_FOR_FGLRX \
+ "Section \"Screen\"\n" \
+ "\tIdentifier\t" BUILTIN_SCREEN_NAME "\n" \
+ "\tDevice\t" BUILTIN_DEVICE_NAME "\n" \
+ "\tDefaultDepth\t24\n" \
+ "EndSection\n\n"
+
#define BUILTIN_LAYOUT_SECTION_PRE \
"Section \"ServerLayout\"\n" \
"\tIdentifier\t\"Builtin Default Layout\"\n"
@@ -153,7 +160,10 @@ xf86AutoConfig(void)
for (p = deviceList; *p; p++) {
snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p);
AppendToConfig(buf);
- snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0);
+ if( strcmp(*p, "fglrx") == 0 )
+ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION_FOR_FGLRX, *p, 0, *p, 0);
+ else
+ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0);
AppendToConfig(buf);
}
++++++ N_p_default-module-path.diff ++++++
Index: hw/xfree86/common/xf86Globals.c
===================================================================
--- hw/xfree86/common/xf86Globals.c.orig
+++ hw/xfree86/common/xf86Globals.c
@@ -135,7 +135,7 @@ xf86InfoRec xf86Info = {
const char *xf86ConfigFile = NULL;
const char *xf86ConfigDir = NULL;
-const char *xf86ModulePath = DEFAULT_MODULE_PATH;
+const char *xf86ModulePath = DEFAULT_MODULE_PATH "/updates," DEFAULT_MODULE_PATH;
MessageType xf86ModPathFrom = X_DEFAULT;
const char *xf86LogFile = DEFAULT_LOGPREFIX;
MessageType xf86LogFileFrom = X_DEFAULT;
++++++ N_p_xnest-ignore-getimage-errors.diff ++++++
Index: xorg-server-1.12.1/hw/xnest/GCOps.c
===================================================================
--- xorg-server-1.12.1.orig/hw/xnest/GCOps.c
+++ xorg-server-1.12.1/hw/xnest/GCOps.c
@@ -94,15 +94,26 @@ xnestPutImage(DrawablePtr pDrawable, GCP
}
}
+static int
+xnestIgnoreErrorHandler (Display *display,
+ XErrorEvent *event)
+{
+ return False; /* return value is ignored */
+}
+
void
xnestGetImage(DrawablePtr pDrawable, int x, int y, int w, int h,
unsigned int format, unsigned long planeMask, char *pImage)
{
XImage *ximage;
int length;
+ int (*old_handler)(Display*, XErrorEvent*);
+ /* we may get BadMatch error when xnest window is minimized */
+ old_handler = XSetErrorHandler (xnestIgnoreErrorHandler);
ximage = XGetImage(xnestDisplay, xnestDrawable(pDrawable),
x, y, w, h, planeMask, format);
+ XSetErrorHandler (old_handler);
if (ximage) {
length = ximage->bytes_per_line * ximage->height;
++++++ N_randr1_1-sig11.diff ++++++
Index: xorg-server-1.12.1/hw/xfree86/common/xf86RandR.c
===================================================================
--- xorg-server-1.12.1.orig/hw/xfree86/common/xf86RandR.c
+++ xorg-server-1.12.1/hw/xfree86/common/xf86RandR.c
@@ -237,6 +237,9 @@ xf86RandRSetConfig(ScreenPtr pScreen,
DeviceIntPtr dev;
Bool view_adjusted = FALSE;
+ if (!scrp->vtSema)
+ return FALSE;
+
for (dev = inputInfo.devices; dev; dev = dev->next) {
if (!IsMaster(dev) && !IsFloating(dev))
continue;
++++++ N_randr_fix_abi.patch ++++++
diff --git a/randr/randrstr.h b/randr/randrstr.h
index 15299fd..03ed146 100644
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -301,7 +301,6 @@ typedef struct _rrScrPriv {
Bool changed; /* some config changed */
Bool configChanged; /* configuration changed */
Bool layoutChanged; /* screen layout changed */
- Bool resourcesChanged; /* screen resources change */
CARD16 minWidth, minHeight;
CARD16 maxWidth, maxHeight;
@@ -338,6 +337,7 @@ typedef struct _rrScrPriv {
RRProviderDestroyProcPtr rrProviderDestroy;
+ Bool resourcesChanged; /* screen resources change */
} rrScrPrivRec, *rrScrPrivPtr;
extern _X_EXPORT DevPrivateKeyRec rrPrivKeyRec;
++++++ N_sync-fix.patch ++++++
Index: xorg-server-1.12.1/Xext/sync.c
===================================================================
--- xorg-server-1.12.1.orig/Xext/sync.c
+++ xorg-server-1.12.1/Xext/sync.c
@@ -2615,9 +2615,43 @@ static XSyncValue *pIdleTimeValueGreater
static void
IdleTimeQueryValue(pointer pCounter, CARD64 * pValue_return)
{
- CARD32 idle = GetTimeInMillis() - lastDeviceEventTime.milliseconds;
+ static CARD32 previousLastDeviceEventTimeMilliseconds = 0;
+ CARD32 now = GetTimeInMillis();
+ CARD32 idle = now - lastDeviceEventTime.milliseconds;
+ CARD32 previousIdle = now - previousLastDeviceEventTimeMilliseconds;
+ SyncCounter *pIdleTimeCounter = (SyncCounter*)pCounter;
XSyncIntsToValue(pValue_return, idle, 0);
+ if (pCounter == NULL)
+ {
+ return;
+ }
+ if (previousLastDeviceEventTimeMilliseconds == 0)
+ {
+ /* initialize static var when this function is invoked the first time. */
+ previousLastDeviceEventTimeMilliseconds = lastDeviceEventTime.milliseconds;
+ return;
+ }
+
+ if (previousLastDeviceEventTimeMilliseconds == lastDeviceEventTime.milliseconds)
+ {
+ /* no new user event, no need to change idle counter. */
+ return;
+ }
+ previousLastDeviceEventTimeMilliseconds = lastDeviceEventTime.milliseconds;
+
+ /*
+ * Some user event occured; now update idle counter with previous
+ * event time, so idle counter has the most up-to-date value with
+ * respect to previous user event (we need old and new counter
+ * value to compute if a transition occured). Recompute bracket
+ * values if this is system counter.
+ */
+
+ XSyncIntsToValue (&pIdleTimeCounter->value, previousIdle, 0);
+ if (IsSystemCounter(pIdleTimeCounter)) {
+ SyncComputeBracketValues(pIdleTimeCounter);
+ }
}
static void
@@ -2700,7 +2734,7 @@ IdleTimeWakeupHandler(pointer env, int r
if (!pIdleTimeValueLess && !pIdleTimeValueGreater)
return;
- IdleTimeQueryValue(NULL, &idle);
+ IdleTimeQueryValue(IdleTimeCounter, &idle);
if ((pIdleTimeValueGreater &&
XSyncValueGreaterOrEqual(idle, *pIdleTimeValueGreater)) ||
++++++ N_xorg-server-xdmcp.patch ++++++
Index: xorg-server-1.12.1/os/access.c
===================================================================
--- xorg-server-1.12.1.orig/os/access.c
+++ xorg-server-1.12.1/os/access.c
@@ -714,7 +714,9 @@ DefineSelf(int fd)
/*
* ignore 'localhost' entries as they're not useful
- * on the other end of the wire
+ * on the other end of the wire and because on hosts
+ * with shared home dirs they'll result in conflicting
+ * entries in ~/.Xauthority
*/
if (ifr->ifa_flags & IFF_LOOPBACK)
continue;
@@ -735,6 +737,14 @@ DefineSelf(int fd)
else if (family == FamilyInternet6 &&
IN6_IS_ADDR_LOOPBACK((struct in6_addr *) addr))
continue;
+
+ /* Ignore IPv6 link local addresses (fe80::/10), because
+ * they need a scope identifier, which we have no way
+ * of telling to the other end.
+ */
+ if (family == FamilyInternet6 &&
+ IN6_IS_ADDR_LINKLOCAL((struct in6_addr *)addr))
+ continue;
#endif
XdmcpRegisterConnection(family, (char *) addr, len);
#if defined(IPv6) && defined(AF_INET6)
++++++ N_zap_warning_xserver.diff ++++++
Index: xorg-server-1.12.1/hw/xfree86/common/xf86Config.c
===================================================================
--- xorg-server-1.12.1.orig/hw/xfree86/common/xf86Config.c
+++ xorg-server-1.12.1/hw/xfree86/common/xf86Config.c
@@ -680,6 +680,7 @@ typedef enum {
FLAG_NOTRAPSIGNALS,
FLAG_DONTVTSWITCH,
FLAG_DONTZAP,
+ FLAG_ZAPWARNING,
FLAG_DONTZOOM,
FLAG_DISABLEVIDMODE,
FLAG_ALLOWNONLOCAL,
@@ -717,6 +718,8 @@ static OptionInfoRec FlagOptions[] = {
{0}, FALSE},
{FLAG_DONTZAP, "DontZap", OPTV_BOOLEAN,
{0}, FALSE},
+ { FLAG_ZAPWARNING, "ZapWarning", OPTV_BOOLEAN,
+ {0}, FALSE },
{FLAG_DONTZOOM, "DontZoom", OPTV_BOOLEAN,
{0}, FALSE},
{FLAG_DISABLEVIDMODE, "DisableVidModeExtension", OPTV_BOOLEAN,
@@ -805,6 +805,7 @@ configServerFlags(XF86ConfFlagsPtr flags
xf86GetOptValBool(FlagOptions, FLAG_NOTRAPSIGNALS, &xf86Info.notrapSignals);
xf86GetOptValBool(FlagOptions, FLAG_DONTVTSWITCH, &xf86Info.dontVTSwitch);
xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap);
+ xf86GetOptValBool(FlagOptions, FLAG_ZAPWARNING, &xf86Info.ZapWarning);
xf86GetOptValBool(FlagOptions, FLAG_DONTZOOM, &xf86Info.dontZoom);
xf86GetOptValBool(FlagOptions, FLAG_IGNORE_ABI, &xf86Info.ignoreABI);
Index: xorg-server-1.12.1/hw/xfree86/common/xf86Events.c
===================================================================
--- xorg-server-1.12.1.orig/hw/xfree86/common/xf86Events.c
+++ xorg-server-1.12.1/hw/xfree86/common/xf86Events.c
@@ -182,13 +182,25 @@ xf86ProcessActionEvent(ActionEvent actio
DebugF("ProcessActionEvent(%d,%x)\n", (int) action, arg);
switch (action) {
case ACTION_TERMINATE:
- if (!xf86Info.dontZap) {
- xf86Msg(X_INFO, "Server zapped. Shutting down.\n");
+ if (xf86Info.dontZap)
+ break;
+
+ if (xf86Info.ZapWarning) {
+ static struct timeval LastZap = { 0, 0};
+ struct timeval NewZap;
+
+ gettimeofday(&NewZap, NULL);
+
+ if ((NewZap.tv_sec - LastZap.tv_sec) >= 2) {
+ xf86OSRingBell(30, 1000, 50);
+ LastZap = NewZap;
+ break;
+ }
+ }
#ifdef XFreeXDGA
- DGAShutdown();
+ DGAShutdown();
#endif
- GiveUp(0);
- }
+ GiveUp(0);
break;
case ACTION_NEXT_MODE:
if (!xf86Info.dontZoom)
Index: xorg-server-1.12.1/hw/xfree86/common/xf86Globals.c
===================================================================
--- xorg-server-1.12.1.orig/hw/xfree86/common/xf86Globals.c
+++ xorg-server-1.12.1/hw/xfree86/common/xf86Globals.c
@@ -108,6 +108,7 @@ xf86InfoRec xf86Info = {
.autoVTSwitch = TRUE,
.ShareVTs = FALSE,
.dontZap = FALSE,
+ .ZapWarning = TRUE,
.dontZoom = FALSE,
.notrapSignals = FALSE,
.caughtSignal = FALSE,
Index: xorg-server-1.12.1/hw/xfree86/common/xf86Privstr.h
===================================================================
--- xorg-server-1.12.1.orig/hw/xfree86/common/xf86Privstr.h
+++ xorg-server-1.12.1/hw/xfree86/common/xf86Privstr.h
@@ -70,6 +70,7 @@ typedef struct {
Bool autoVTSwitch;
Bool ShareVTs;
Bool dontZap;
+ Bool ZapWarning;
Bool dontZoom;
Bool notrapSignals; /* don't exit cleanly - die at fault */
Bool caughtSignal;
++++++ README.updates ++++++
Xserver module update mechanism
-------------------------------
If any corresponding Xserver module is found below
"/usr/lib/xorg/modules/updates/" ("/usr/lib64/xorg/modules/updates/"
on biarch 32/64 bit platforms) it will be favored over the one in
"/usr/lib/xorg/modules/" ("/usr/lib64/xorg/modules/" on biarch 32/64
bit platforms).
++++++ U_Xi_fix_modifier_offset_in_XIPassiveGrab_swapping_function.patch ++++++
>From 76b3be75b62657e346731444736f7e4d200beb5b Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer(a)who-t.net>
Date: Fri, 24 Jan 2014 16:51:02 +1000
Subject: [PATCH] Xi: fix modifier offset in XIPassiveGrab swapping function
The request is followed by mask_len 4-byte units, then followed by the actual
modifiers.
Also fix up the swapping test, which had the same issue.
Reported-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
Reviewed-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
diff --git a/Xi/xipassivegrab.c b/Xi/xipassivegrab.c
index eccec0a..8aba977 100644
--- a/Xi/xipassivegrab.c
+++ b/Xi/xipassivegrab.c
@@ -63,7 +63,7 @@ SProcXIPassiveGrabDevice(ClientPtr client)
swaps(&stuff->mask_len);
swaps(&stuff->num_modifiers);
- mods = (uint32_t *) &stuff[1];
+ mods = (uint32_t *) &stuff[1] + stuff->mask_len;
for (i = 0; i < stuff->num_modifiers; i++, mods++) {
swapl(mods);
++++++ U_Xi_unvalidated_lengths_in_Xinput_extension.patch ++++++
Subject: Xi: unvalidated lengths in Xinput extension
References: bnc#907268, CVE-2014-8095
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
Multiple functions in the Xinput extension handling of requests from
clients failed to check that the length of the request sent by the
client was large enough to perform all the required operations and
thus could read or write to memory outside the bounds of the request
buffer.
This commit includes the creation of a new REQUEST_AT_LEAST_EXTRA_SIZE
macro in include/dix.h for the common case of needing to ensure a
request is large enough to include both the request itself and a
minimum amount of extra data following the request header.
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
---
Xi/chgdctl.c | 8 ++++++--
Xi/chgfctl.c | 2 ++
Xi/sendexev.c | 3 +++
Xi/xiallowev.c | 2 ++
Xi/xichangecursor.c | 2 +-
Xi/xichangehierarchy.c | 35 ++++++++++++++++++++++++++++++++---
Xi/xigetclientpointer.c | 1 +
Xi/xigrabdev.c | 9 ++++++++-
Xi/xipassivegrab.c | 12 ++++++++++--
Xi/xiproperty.c | 14 ++++++--------
Xi/xiquerydevice.c | 1 +
Xi/xiquerypointer.c | 2 ++
Xi/xiselectev.c | 8 ++++++++
Xi/xisetclientpointer.c | 3 ++-
Xi/xisetdevfocus.c | 4 ++++
Xi/xiwarppointer.c | 2 ++
include/dix.h | 4 ++++
17 files changed, 94 insertions(+), 18 deletions(-)
diff --git a/Xi/chgdctl.c b/Xi/chgdctl.c
index d078aa2..b3ee867 100644
--- a/Xi/chgdctl.c
+++ b/Xi/chgdctl.c
@@ -78,7 +78,7 @@ SProcXChangeDeviceControl(ClientPtr client)
REQUEST(xChangeDeviceControlReq);
swaps(&stuff->length);
- REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq);
+ REQUEST_AT_LEAST_EXTRA_SIZE(xChangeDeviceControlReq, sizeof(xDeviceCtl));
swaps(&stuff->control);
ctl = (xDeviceCtl *) &stuff[1];
swaps(&ctl->control);
@@ -115,7 +115,7 @@ ProcXChangeDeviceControl(ClientPtr client)
xDeviceEnableCtl *e;
REQUEST(xChangeDeviceControlReq);
- REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq);
+ REQUEST_AT_LEAST_EXTRA_SIZE(xChangeDeviceControlReq, sizeof(xDeviceCtl));
len = stuff->length - bytes_to_int32(sizeof(xChangeDeviceControlReq));
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess);
@@ -192,6 +192,10 @@ ProcXChangeDeviceControl(ClientPtr client)
break;
case DEVICE_ENABLE:
e = (xDeviceEnableCtl *) &stuff[1];
+ if ((len != bytes_to_int32(sizeof(xDeviceEnableCtl)))) {
+ ret = BadLength;
+ goto out;
+ }
if (IsXTestDevice(dev, NULL))
status = !Success;
diff --git a/Xi/chgfctl.c b/Xi/chgfctl.c
index 6dcf60c..224c2ba 100644
--- a/Xi/chgfctl.c
+++ b/Xi/chgfctl.c
@@ -467,6 +467,8 @@ ProcXChangeFeedbackControl(ClientPtr client)
xStringFeedbackCtl *f = ((xStringFeedbackCtl *) &stuff[1]);
if (client->swapped) {
+ if (len < bytes_to_int32(sizeof(xStringFeedbackCtl)))
+ return BadLength;
swaps(&f->num_keysyms);
}
if (len !=
diff --git a/Xi/sendexev.c b/Xi/sendexev.c
index 3c21386..183f88d 100644
--- a/Xi/sendexev.c
+++ b/Xi/sendexev.c
@@ -135,6 +135,9 @@ ProcXSendExtensionEvent(ClientPtr client)
if (ret != Success)
return ret;
+ if (stuff->num_events == 0)
+ return ret;
+
/* The client's event type must be one defined by an extension. */
first = ((xEvent *) &stuff[1]);
diff --git a/Xi/xiallowev.c b/Xi/xiallowev.c
index ebef233..ca263ef 100644
--- a/Xi/xiallowev.c
+++ b/Xi/xiallowev.c
@@ -48,6 +48,7 @@ int
SProcXIAllowEvents(ClientPtr client)
{
REQUEST(xXIAllowEventsReq);
+ REQUEST_AT_LEAST_SIZE(xXIAllowEventsReq);
swaps(&stuff->length);
swaps(&stuff->deviceid);
@@ -55,6 +56,7 @@ SProcXIAllowEvents(ClientPtr client)
if (stuff->length > 3) {
xXI2_2AllowEventsReq *req_xi22 = (xXI2_2AllowEventsReq *) stuff;
+ REQUEST_AT_LEAST_SIZE(xXI2_2AllowEventsReq);
swapl(&req_xi22->touchid);
swapl(&req_xi22->grab_window);
}
diff --git a/Xi/xichangecursor.c b/Xi/xichangecursor.c
index 7a1bb7a..8e6255b 100644
--- a/Xi/xichangecursor.c
+++ b/Xi/xichangecursor.c
@@ -57,11 +57,11 @@ int
SProcXIChangeCursor(ClientPtr client)
{
REQUEST(xXIChangeCursorReq);
+ REQUEST_SIZE_MATCH(xXIChangeCursorReq);
swaps(&stuff->length);
swapl(&stuff->win);
swapl(&stuff->cursor);
swaps(&stuff->deviceid);
- REQUEST_SIZE_MATCH(xXIChangeCursorReq);
return (ProcXIChangeCursor(client));
}
diff --git a/Xi/xichangehierarchy.c b/Xi/xichangehierarchy.c
index 9e36354..2732445 100644
--- a/Xi/xichangehierarchy.c
+++ b/Xi/xichangehierarchy.c
@@ -411,7 +411,7 @@ int
ProcXIChangeHierarchy(ClientPtr client)
{
xXIAnyHierarchyChangeInfo *any;
- int required_len = sizeof(xXIChangeHierarchyReq);
+ size_t len; /* length of data remaining in request */
int rc = Success;
int flags[MAXDEVICES] = { 0 };
@@ -421,21 +421,46 @@ ProcXIChangeHierarchy(ClientPtr client)
if (!stuff->num_changes)
return rc;
+ if (stuff->length > (INT_MAX >> 2))
+ return BadAlloc;
+ len = (stuff->length << 2) - sizeof(xXIAnyHierarchyChangeInfo);
+
any = (xXIAnyHierarchyChangeInfo *) &stuff[1];
while (stuff->num_changes--) {
+ if (len < sizeof(xXIAnyHierarchyChangeInfo)) {
+ rc = BadLength;
+ goto unwind;
+ }
+
SWAPIF(swaps(&any->type));
SWAPIF(swaps(&any->length));
- required_len += any->length;
- if ((stuff->length * 4) < required_len)
+ if ((any->length > (INT_MAX >> 2)) || (len < (any->length << 2)))
return BadLength;
+#define CHANGE_SIZE_MATCH(type) \
+ do { \
+ if ((len < sizeof(type)) || (any->length != (sizeof(type) >> 2))) { \
+ rc = BadLength; \
+ goto unwind; \
+ } \
+ } while(0)
+
switch (any->type) {
case XIAddMaster:
{
xXIAddMasterInfo *c = (xXIAddMasterInfo *) any;
+ /* Variable length, due to appended name string */
+ if (len < sizeof(xXIAddMasterInfo)) {
+ rc = BadLength;
+ goto unwind;
+ }
SWAPIF(swaps(&c->name_len));
+ if (c->name_len > (len - sizeof(xXIAddMasterInfo))) {
+ rc = BadLength;
+ goto unwind;
+ }
rc = add_master(client, c, flags);
if (rc != Success)
@@ -446,6 +471,7 @@ ProcXIChangeHierarchy(ClientPtr client)
{
xXIRemoveMasterInfo *r = (xXIRemoveMasterInfo *) any;
+ CHANGE_SIZE_MATCH(xXIRemoveMasterInfo);
rc = remove_master(client, r, flags);
if (rc != Success)
goto unwind;
@@ -455,6 +481,7 @@ ProcXIChangeHierarchy(ClientPtr client)
{
xXIDetachSlaveInfo *c = (xXIDetachSlaveInfo *) any;
+ CHANGE_SIZE_MATCH(xXIDetachSlaveInfo);
rc = detach_slave(client, c, flags);
if (rc != Success)
goto unwind;
@@ -464,6 +491,7 @@ ProcXIChangeHierarchy(ClientPtr client)
{
xXIAttachSlaveInfo *c = (xXIAttachSlaveInfo *) any;
+ CHANGE_SIZE_MATCH(xXIAttachSlaveInfo);
rc = attach_slave(client, c, flags);
if (rc != Success)
goto unwind;
@@ -471,6 +499,7 @@ ProcXIChangeHierarchy(ClientPtr client)
break;
}
+ len -= any->length * 4;
any = (xXIAnyHierarchyChangeInfo *) ((char *) any + any->length * 4);
}
diff --git a/Xi/xigetclientpointer.c b/Xi/xigetclientpointer.c
index 3c90d58..306dd39 100644
--- a/Xi/xigetclientpointer.c
+++ b/Xi/xigetclientpointer.c
@@ -50,6 +50,7 @@ int
SProcXIGetClientPointer(ClientPtr client)
{
REQUEST(xXIGetClientPointerReq);
+ REQUEST_SIZE_MATCH(xXIGetClientPointerReq);
swaps(&stuff->length);
swapl(&stuff->win);
diff --git a/Xi/xigrabdev.c b/Xi/xigrabdev.c
index 63d95bc..e2a2ae3 100644
--- a/Xi/xigrabdev.c
+++ b/Xi/xigrabdev.c
@@ -47,6 +47,11 @@ int
SProcXIGrabDevice(ClientPtr client)
{
REQUEST(xXIGrabDeviceReq);
+ /*
+ * Check here for at least the length of the struct we swap, then
+ * let ProcXIGrabDevice check the full size after we swap mask_len.
+ */
+ REQUEST_AT_LEAST_SIZE(xXIGrabDeviceReq);
swaps(&stuff->length);
swaps(&stuff->deviceid);
@@ -71,7 +76,7 @@ ProcXIGrabDevice(ClientPtr client)
unsigned int pointer_mode;
REQUEST(xXIGrabDeviceReq);
- REQUEST_AT_LEAST_SIZE(xXIGrabDeviceReq);
+ REQUEST_FIXED_SIZE(xXIGrabDeviceReq, ((size_t) stuff->mask_len) * 4);
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixGrabAccess);
if (ret != Success)
@@ -131,6 +136,7 @@ int
SProcXIUngrabDevice(ClientPtr client)
{
REQUEST(xXIUngrabDeviceReq);
+ REQUEST_SIZE_MATCH(xXIUngrabDeviceReq);
swaps(&stuff->length);
swaps(&stuff->deviceid);
@@ -148,6 +154,7 @@ ProcXIUngrabDevice(ClientPtr client)
TimeStamp time;
REQUEST(xXIUngrabDeviceReq);
+ REQUEST_SIZE_MATCH(xXIUngrabDeviceReq);
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixGetAttrAccess);
if (ret != Success)
diff --git a/Xi/xipassivegrab.c b/Xi/xipassivegrab.c
index 700622d..9241ffd 100644
--- a/Xi/xipassivegrab.c
+++ b/Xi/xipassivegrab.c
@@ -53,6 +53,7 @@ SProcXIPassiveGrabDevice(ClientPtr client)
uint32_t *mods;
REQUEST(xXIPassiveGrabDeviceReq);
+ REQUEST_AT_LEAST_SIZE(xXIPassiveGrabDeviceReq);
swaps(&stuff->length);
swaps(&stuff->deviceid);
@@ -63,6 +64,8 @@ SProcXIPassiveGrabDevice(ClientPtr client)
swaps(&stuff->mask_len);
swaps(&stuff->num_modifiers);
+ REQUEST_FIXED_SIZE(xXIPassiveGrabDeviceReq,
+ ((uint32_t) stuff->mask_len + stuff->num_modifiers) *4);
mods = (uint32_t *) &stuff[1] + stuff->mask_len;
for (i = 0; i < stuff->num_modifiers; i++, mods++) {
@@ -92,7 +95,8 @@ ProcXIPassiveGrabDevice(ClientPtr client)
int mask_len;
REQUEST(xXIPassiveGrabDeviceReq);
- REQUEST_AT_LEAST_SIZE(xXIPassiveGrabDeviceReq);
+ REQUEST_FIXED_SIZE(xXIPassiveGrabDeviceReq,
+ ((uint32_t) stuff->mask_len + stuff->num_modifiers) * 4);
if (stuff->deviceid == XIAllDevices)
dev = inputInfo.all_devices;
@@ -252,6 +256,7 @@ SProcXIPassiveUngrabDevice(ClientPtr client)
uint32_t *modifiers;
REQUEST(xXIPassiveUngrabDeviceReq);
+ REQUEST_AT_LEAST_SIZE(xXIPassiveUngrabDeviceReq);
swaps(&stuff->length);
swapl(&stuff->grab_window);
@@ -259,6 +264,8 @@ SProcXIPassiveUngrabDevice(ClientPtr client)
swapl(&stuff->detail);
swaps(&stuff->num_modifiers);
+ REQUEST_FIXED_SIZE(xXIPassiveUngrabDeviceReq,
+ ((uint32_t) stuff->num_modifiers) << 2);
modifiers = (uint32_t *) &stuff[1];
for (i = 0; i < stuff->num_modifiers; i++, modifiers++)
@@ -277,7 +284,8 @@ ProcXIPassiveUngrabDevice(ClientPtr client)
int i, rc;
REQUEST(xXIPassiveUngrabDeviceReq);
- REQUEST_AT_LEAST_SIZE(xXIPassiveUngrabDeviceReq);
+ REQUEST_FIXED_SIZE(xXIPassiveUngrabDeviceReq,
+ ((uint32_t) stuff->num_modifiers) << 2);
if (stuff->deviceid == XIAllDevices)
dev = inputInfo.all_devices;
diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c
index 463607d..8e8e4b0 100644
--- a/Xi/xiproperty.c
+++ b/Xi/xiproperty.c
@@ -1013,10 +1013,9 @@ int
SProcXListDeviceProperties(ClientPtr client)
{
REQUEST(xListDevicePropertiesReq);
+ REQUEST_SIZE_MATCH(xListDevicePropertiesReq);
swaps(&stuff->length);
-
- REQUEST_SIZE_MATCH(xListDevicePropertiesReq);
return (ProcXListDeviceProperties(client));
}
@@ -1037,10 +1036,10 @@ int
SProcXDeleteDeviceProperty(ClientPtr client)
{
REQUEST(xDeleteDevicePropertyReq);
+ REQUEST_SIZE_MATCH(xDeleteDevicePropertyReq);
swaps(&stuff->length);
swapl(&stuff->property);
- REQUEST_SIZE_MATCH(xDeleteDevicePropertyReq);
return (ProcXDeleteDeviceProperty(client));
}
@@ -1048,13 +1047,13 @@ int
SProcXGetDeviceProperty(ClientPtr client)
{
REQUEST(xGetDevicePropertyReq);
+ REQUEST_SIZE_MATCH(xGetDevicePropertyReq);
swaps(&stuff->length);
swapl(&stuff->property);
swapl(&stuff->type);
swapl(&stuff->longOffset);
swapl(&stuff->longLength);
- REQUEST_SIZE_MATCH(xGetDevicePropertyReq);
return (ProcXGetDeviceProperty(client));
}
@@ -1253,11 +1252,10 @@ int
SProcXIListProperties(ClientPtr client)
{
REQUEST(xXIListPropertiesReq);
+ REQUEST_SIZE_MATCH(xXIListPropertiesReq);
swaps(&stuff->length);
swaps(&stuff->deviceid);
-
- REQUEST_SIZE_MATCH(xXIListPropertiesReq);
return (ProcXIListProperties(client));
}
@@ -1279,11 +1277,11 @@ int
SProcXIDeleteProperty(ClientPtr client)
{
REQUEST(xXIDeletePropertyReq);
+ REQUEST_SIZE_MATCH(xXIDeletePropertyReq);
swaps(&stuff->length);
swaps(&stuff->deviceid);
swapl(&stuff->property);
- REQUEST_SIZE_MATCH(xXIDeletePropertyReq);
return (ProcXIDeleteProperty(client));
}
@@ -1291,6 +1289,7 @@ int
SProcXIGetProperty(ClientPtr client)
{
REQUEST(xXIGetPropertyReq);
+ REQUEST_SIZE_MATCH(xXIGetPropertyReq);
swaps(&stuff->length);
swaps(&stuff->deviceid);
@@ -1298,7 +1297,6 @@ SProcXIGetProperty(ClientPtr client)
swapl(&stuff->type);
swapl(&stuff->offset);
swapl(&stuff->len);
- REQUEST_SIZE_MATCH(xXIGetPropertyReq);
return (ProcXIGetProperty(client));
}
diff --git a/Xi/xiquerydevice.c b/Xi/xiquerydevice.c
index 4e544f0..67a9a4f 100644
--- a/Xi/xiquerydevice.c
+++ b/Xi/xiquerydevice.c
@@ -54,6 +54,7 @@ int
SProcXIQueryDevice(ClientPtr client)
{
REQUEST(xXIQueryDeviceReq);
+ REQUEST_SIZE_MATCH(xXIQueryDeviceReq);
swaps(&stuff->length);
swaps(&stuff->deviceid);
diff --git a/Xi/xiquerypointer.c b/Xi/xiquerypointer.c
index e9bdd42..7ec0c85 100644
--- a/Xi/xiquerypointer.c
+++ b/Xi/xiquerypointer.c
@@ -63,6 +63,8 @@ int
SProcXIQueryPointer(ClientPtr client)
{
REQUEST(xXIQueryPointerReq);
+ REQUEST_SIZE_MATCH(xXIQueryPointerReq);
+
swaps(&stuff->length);
swaps(&stuff->deviceid);
swapl(&stuff->win);
diff --git a/Xi/xiselectev.c b/Xi/xiselectev.c
index 45a996e..168579f 100644
--- a/Xi/xiselectev.c
+++ b/Xi/xiselectev.c
@@ -114,6 +114,7 @@ int
SProcXISelectEvents(ClientPtr client)
{
int i;
+ int len;
xXIEventMask *evmask;
REQUEST(xXISelectEventsReq);
@@ -122,10 +123,17 @@ SProcXISelectEvents(ClientPtr client)
swapl(&stuff->win);
swaps(&stuff->num_masks);
+ len = stuff->length - bytes_to_int32(sizeof(xXISelectEventsReq));
evmask = (xXIEventMask *) &stuff[1];
for (i = 0; i < stuff->num_masks; i++) {
+ if (len < bytes_to_int32(sizeof(xXIEventMask)))
+ return BadLength;
+ len -= bytes_to_int32(sizeof(xXIEventMask));
swaps(&evmask->deviceid);
swaps(&evmask->mask_len);
+ if (len < evmask->mask_len)
+ return BadLength;
+ len -= evmask->mask_len;
evmask =
(xXIEventMask *) (((char *) &evmask[1]) + evmask->mask_len * 4);
}
diff --git a/Xi/xisetclientpointer.c b/Xi/xisetclientpointer.c
index 38ff51e..24d4a53 100644
--- a/Xi/xisetclientpointer.c
+++ b/Xi/xisetclientpointer.c
@@ -51,10 +51,11 @@ int
SProcXISetClientPointer(ClientPtr client)
{
REQUEST(xXISetClientPointerReq);
+ REQUEST_SIZE_MATCH(xXISetClientPointerReq);
+
swaps(&stuff->length);
swapl(&stuff->win);
swaps(&stuff->deviceid);
- REQUEST_SIZE_MATCH(xXISetClientPointerReq);
return (ProcXISetClientPointer(client));
}
diff --git a/Xi/xisetdevfocus.c b/Xi/xisetdevfocus.c
index 372ec24..96a9a16 100644
--- a/Xi/xisetdevfocus.c
+++ b/Xi/xisetdevfocus.c
@@ -44,6 +44,8 @@ int
SProcXISetFocus(ClientPtr client)
{
REQUEST(xXISetFocusReq);
+ REQUEST_AT_LEAST_SIZE(xXISetFocusReq);
+
swaps(&stuff->length);
swaps(&stuff->deviceid);
swapl(&stuff->focus);
@@ -56,6 +58,8 @@ int
SProcXIGetFocus(ClientPtr client)
{
REQUEST(xXIGetFocusReq);
+ REQUEST_AT_LEAST_SIZE(xXIGetFocusReq);
+
swaps(&stuff->length);
swaps(&stuff->deviceid);
diff --git a/Xi/xiwarppointer.c b/Xi/xiwarppointer.c
index 3f051f7..780758a 100644
--- a/Xi/xiwarppointer.c
+++ b/Xi/xiwarppointer.c
@@ -56,6 +56,8 @@ int
SProcXIWarpPointer(ClientPtr client)
{
REQUEST(xXIWarpPointerReq);
+ REQUEST_SIZE_MATCH(xXIWarpPointerReq);
+
swaps(&stuff->length);
swapl(&stuff->src_win);
swapl(&stuff->dst_win);
diff --git a/include/dix.h b/include/dix.h
index e0c6ed8..21176a8 100644
--- a/include/dix.h
+++ b/include/dix.h
@@ -74,6 +74,10 @@ SOFTWARE.
if ((sizeof(req) >> 2) > client->req_len )\
return(BadLength)
+#define REQUEST_AT_LEAST_EXTRA_SIZE(req, extra) \
+ if (((sizeof(req) + ((uint64_t) extra)) >> 2) > client->req_len ) \
+ return(BadLength)
+
#define REQUEST_FIXED_SIZE(req, n)\
if (((sizeof(req) >> 2) > client->req_len) || \
((n >> 2) >= client->req_len) || \
--
1.7.9.2
++++++ U_Xv_unvalidated_lengths_in_XVideo_extension_swapped_procs.patch ++++++
Subject: Xv: unvalidated lengths in XVideo extension swapped procs
References: bnc#907268, CVE-2014-8099
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
---
Xext/xvdisp.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c
index 86f982a..c2d0fc9 100644
--- a/Xext/xvdisp.c
+++ b/Xext/xvdisp.c
@@ -1121,6 +1121,7 @@ static int
SProcXvQueryExtension(ClientPtr client)
{
REQUEST(xvQueryExtensionReq);
+ REQUEST_SIZE_MATCH(xvQueryExtensionReq);
swaps(&stuff->length);
return XvProcVector[xv_QueryExtension] (client);
}
@@ -1129,6 +1130,7 @@ static int
SProcXvQueryAdaptors(ClientPtr client)
{
REQUEST(xvQueryAdaptorsReq);
+ REQUEST_SIZE_MATCH(xvQueryAdaptorsReq);
swaps(&stuff->length);
swapl(&stuff->window);
return XvProcVector[xv_QueryAdaptors] (client);
@@ -1138,6 +1140,7 @@ static int
SProcXvQueryEncodings(ClientPtr client)
{
REQUEST(xvQueryEncodingsReq);
+ REQUEST_SIZE_MATCH(xvQueryEncodingsReq);
swaps(&stuff->length);
swapl(&stuff->port);
return XvProcVector[xv_QueryEncodings] (client);
@@ -1147,6 +1150,7 @@ static int
SProcXvGrabPort(ClientPtr client)
{
REQUEST(xvGrabPortReq);
+ REQUEST_SIZE_MATCH(xvGrabPortReq);
swaps(&stuff->length);
swapl(&stuff->port);
swapl(&stuff->time);
@@ -1157,6 +1161,7 @@ static int
SProcXvUngrabPort(ClientPtr client)
{
REQUEST(xvUngrabPortReq);
+ REQUEST_SIZE_MATCH(xvUngrabPortReq);
swaps(&stuff->length);
swapl(&stuff->port);
swapl(&stuff->time);
@@ -1167,6 +1172,7 @@ static int
SProcXvPutVideo(ClientPtr client)
{
REQUEST(xvPutVideoReq);
+ REQUEST_SIZE_MATCH(xvPutVideoReq);
swaps(&stuff->length);
swapl(&stuff->port);
swapl(&stuff->drawable);
@@ -1186,6 +1192,7 @@ static int
SProcXvPutStill(ClientPtr client)
{
REQUEST(xvPutStillReq);
+ REQUEST_SIZE_MATCH(xvPutStillReq);
swaps(&stuff->length);
swapl(&stuff->port);
swapl(&stuff->drawable);
@@ -1205,6 +1212,7 @@ static int
SProcXvGetVideo(ClientPtr client)
{
REQUEST(xvGetVideoReq);
+ REQUEST_SIZE_MATCH(xvGetVideoReq);
swaps(&stuff->length);
swapl(&stuff->port);
swapl(&stuff->drawable);
@@ -1224,6 +1232,7 @@ static int
SProcXvGetStill(ClientPtr client)
{
REQUEST(xvGetStillReq);
+ REQUEST_SIZE_MATCH(xvGetStillReq);
swaps(&stuff->length);
swapl(&stuff->port);
swapl(&stuff->drawable);
@@ -1243,6 +1252,7 @@ static int
SProcXvPutImage(ClientPtr client)
{
REQUEST(xvPutImageReq);
+ REQUEST_AT_LEAST_SIZE(xvPutImageReq);
swaps(&stuff->length);
swapl(&stuff->port);
swapl(&stuff->drawable);
@@ -1266,6 +1276,7 @@ static int
SProcXvShmPutImage(ClientPtr client)
{
REQUEST(xvShmPutImageReq);
+ REQUEST_SIZE_MATCH(xvShmPutImageReq);
swaps(&stuff->length);
swapl(&stuff->port);
swapl(&stuff->drawable);
@@ -1293,6 +1304,7 @@ static int
SProcXvSelectVideoNotify(ClientPtr client)
{
REQUEST(xvSelectVideoNotifyReq);
+ REQUEST_SIZE_MATCH(xvSelectVideoNotifyReq);
swaps(&stuff->length);
swapl(&stuff->drawable);
return XvProcVector[xv_SelectVideoNotify] (client);
@@ -1302,6 +1314,7 @@ static int
SProcXvSelectPortNotify(ClientPtr client)
{
REQUEST(xvSelectPortNotifyReq);
+ REQUEST_SIZE_MATCH(xvSelectPortNotifyReq);
swaps(&stuff->length);
swapl(&stuff->port);
return XvProcVector[xv_SelectPortNotify] (client);
@@ -1311,6 +1324,7 @@ static int
SProcXvStopVideo(ClientPtr client)
{
REQUEST(xvStopVideoReq);
+ REQUEST_SIZE_MATCH(xvStopVideoReq);
swaps(&stuff->length);
swapl(&stuff->port);
swapl(&stuff->drawable);
@@ -1321,6 +1335,7 @@ static int
SProcXvSetPortAttribute(ClientPtr client)
{
REQUEST(xvSetPortAttributeReq);
+ REQUEST_SIZE_MATCH(xvSetPortAttributeReq);
swaps(&stuff->length);
swapl(&stuff->port);
swapl(&stuff->attribute);
@@ -1332,6 +1347,7 @@ static int
SProcXvGetPortAttribute(ClientPtr client)
{
REQUEST(xvGetPortAttributeReq);
+ REQUEST_SIZE_MATCH(xvGetPortAttributeReq);
swaps(&stuff->length);
swapl(&stuff->port);
swapl(&stuff->attribute);
@@ -1342,6 +1358,7 @@ static int
SProcXvQueryBestSize(ClientPtr client)
{
REQUEST(xvQueryBestSizeReq);
+ REQUEST_SIZE_MATCH(xvQueryBestSizeReq);
swaps(&stuff->length);
swapl(&stuff->port);
swaps(&stuff->vid_w);
@@ -1355,6 +1372,7 @@ static int
SProcXvQueryPortAttributes(ClientPtr client)
{
REQUEST(xvQueryPortAttributesReq);
+ REQUEST_SIZE_MATCH(xvQueryPortAttributesReq);
swaps(&stuff->length);
swapl(&stuff->port);
return XvProcVector[xv_QueryPortAttributes] (client);
@@ -1364,6 +1382,7 @@ static int
SProcXvQueryImageAttributes(ClientPtr client)
{
REQUEST(xvQueryImageAttributesReq);
+ REQUEST_SIZE_MATCH(xvQueryImageAttributesReq);
swaps(&stuff->length);
swapl(&stuff->port);
swapl(&stuff->id);
@@ -1376,6 +1395,7 @@ static int
SProcXvListImageFormats(ClientPtr client)
{
REQUEST(xvListImageFormatsReq);
+ REQUEST_SIZE_MATCH(xvListImageFormatsReq);
swaps(&stuff->length);
swapl(&stuff->port);
return XvProcVector[xv_ListImageFormats] (client);
--
1.7.9.2
++++++ U_dbe_Call_to_DDX_SwapBuffers_requires_address_of_int_not_unsigned_int.patch ++++++
Subject: dbe: Call to DDX SwapBuffers requires address of int, not unsigned int
References: bnc#907268, CVE-2014-8097
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
When the local types used to walk the DBE request were changed, this
changed the type of the parameter passed to the DDX SwapBuffers API,
but there wasn't a matching change in the API definition.
At this point, with the API frozen, I just stuck a new variable in
with the correct type. Because we've already bounds-checked nStuff to
be smaller than UINT32_MAX / sizeof(DbeSwapInfoRec), we know it will
fit in a signed int without overflow.
Signed-off-by: Keith Packard <keithp(a)keithp.com
Reviewed-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
dbe/dbe.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/dbe/dbe.c b/dbe/dbe.c
index df2ad5c..e5d928d 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -452,6 +452,7 @@ ProcDbeSwapBuffers(ClientPtr client)
int error;
unsigned int i, j;
unsigned int nStuff;
+ int nStuff_i; /* DDX API requires int for nStuff */
REQUEST_AT_LEAST_SIZE(xDbeSwapBuffersReq);
nStuff = stuff->n; /* use local variable for performance. */
@@ -527,9 +528,10 @@ ProcDbeSwapBuffers(ClientPtr client)
* could deal with cross-screen synchronization.
*/
- while (nStuff > 0) {
+ nStuff_i = nStuff;
+ while (nStuff_i > 0) {
pDbeScreenPriv = DBE_SCREEN_PRIV_FROM_WINDOW(swapInfo[0].pWindow);
- error = (*pDbeScreenPriv->SwapBuffers) (client, &nStuff, swapInfo);
+ error = (*pDbeScreenPriv->SwapBuffers) (client, &nStuff_i, swapInfo);
if (error != Success) {
free(swapInfo);
return error;
--
1.8.4.5
++++++ U_dbe_unvalidated_lengths_in_DbeSwapBuffers_calls.patch ++++++
Subject: dbe: unvalidated lengths in DbeSwapBuffers calls
References: bnc#907268, CVE-2014-8097
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
ProcDbeSwapBuffers() has a 32bit (n) length value that it uses to read
from a buffer. The length is never validated, which can lead to out of
bound reads, and possibly returning the data read from out of bounds to
the misbehaving client via an X Error packet.
SProcDbeSwapBuffers() swaps data (for correct endianness) before
handing it off to the real proc. While doing the swapping, the
length field is not validated, which can cause memory corruption.
v2: reorder checks to avoid compilers optimizing out checks for overflow
that happen after we'd already have done the overflowing multiplications.
Reported-by: Ilja Van Sprundel <ivansprundel(a)ioactive.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
---
dbe/dbe.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/dbe/dbe.c b/dbe/dbe.c
index 527588c..df2ad5c 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -450,18 +450,20 @@ ProcDbeSwapBuffers(ClientPtr client)
DbeSwapInfoPtr swapInfo;
xDbeSwapInfo *dbeSwapInfo;
int error;
- register int i, j;
- int nStuff;
+ unsigned int i, j;
+ unsigned int nStuff;
REQUEST_AT_LEAST_SIZE(xDbeSwapBuffersReq);
nStuff = stuff->n; /* use local variable for performance. */
if (nStuff == 0) {
+ REQUEST_SIZE_MATCH(xDbeSwapBuffersReq);
return Success;
}
if (nStuff > UINT32_MAX / sizeof(DbeSwapInfoRec))
return BadAlloc;
+ REQUEST_FIXED_SIZE(xDbeSwapBuffersReq, nStuff * sizeof(xDbeSwapInfo));
/* Get to the swap info appended to the end of the request. */
dbeSwapInfo = (xDbeSwapInfo *) &stuff[1];
@@ -914,13 +916,16 @@ static int
SProcDbeSwapBuffers(ClientPtr client)
{
REQUEST(xDbeSwapBuffersReq);
- register int i;
+ unsigned int i;
xDbeSwapInfo *pSwapInfo;
swaps(&stuff->length);
REQUEST_AT_LEAST_SIZE(xDbeSwapBuffersReq);
swapl(&stuff->n);
+ if (stuff->n > UINT32_MAX / sizeof(DbeSwapInfoRec))
+ return BadAlloc;
+ REQUEST_FIXED_SIZE(xDbeSwapBuffersReq, stuff->n * sizeof(xDbeSwapInfo));
if (stuff->n != 0) {
pSwapInfo = (xDbeSwapInfo *) stuff + 1;
--
1.7.9.2
++++++ U_dix-Allow-zero-height-PutImage-requests.patch ++++++
From: Keith Packard <keithp(a)keithp.com>
Date: Sat Jan 3 08:46:45 2015 -0800
Subject: [PATCH]dix: Allow zero-height PutImage requests
Patch-mainline: Upstream
Git-commit: dc777c346d5d452a53b13b917c45f6a1bad2f20b
Git-repo: git://anongit.freedesktop.org/git/xorg/xserver
References: bnc#928513
Signed-off-by: Egbert Eich <eich(a)suse.com>
The length checking code validates PutImage height and byte width by
making sure that byte-width >= INT32_MAX / height. If height is zero,
this generates a divide by zero exception. Allow zero height requests
explicitly, bypassing the INT32_MAX check.
Signed-off-by: Keith Packard <keithp(a)keithp.com>
Reviewed-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
dix/dispatch.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dix/dispatch.c b/dix/dispatch.c
index 55b978d..9044ac7 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -2000,7 +2000,7 @@ ProcPutImage(ClientPtr client)
tmpImage = (char *) &stuff[1];
lengthProto = length;
- if (lengthProto >= (INT32_MAX / stuff->height))
+ if (stuff->height != 0 && lengthProto >= (INT32_MAX / stuff->height))
return BadLength;
if ((bytes_to_int32(lengthProto * stuff->height) +
++++++ U_dix_GetHosts_bounds_check_using_wrong_pointer_value.patch ++++++
Subject: dix: GetHosts bounds check using wrong pointer value
References: bnc#907268, CVE-2014-8092
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
GetHosts saves the pointer to allocated memory in *data, and then
wants to bounds-check writes to that region, but was mistakenly using
a bare 'data' instead of '*data'. Also, data is declared as void **,
so we need a cast to turn it into a byte pointer so we can actually do
pointer comparisons.
Signed-off-by: Keith Packard <keithp(a)keithp.com>
Reviewed-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
os/access.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/os/access.c b/os/access.c
index f393c8d..28f2d32 100644
--- a/os/access.c
+++ b/os/access.c
@@ -1308,7 +1308,7 @@ GetHosts(void **data, int *pnHosts, int *pLen, BOOL * pEnabled)
}
for (host = validhosts; host; host = host->next) {
len = host->len;
- if ((ptr + sizeof(xHostEntry) + len) > (data + n))
+ if ((ptr + sizeof(xHostEntry) + len) > ((unsigned char *) *data + n))
break;
((xHostEntry *) ptr)->family = host->family;
((xHostEntry *) ptr)->length = len;
--
1.8.4.5
++++++ U_dix_Missing_parens_in_REQUEST_FIXED_SIZE_macro.patch ++++++
Subject: Missing parens in REQUEST_FIXED_SIZE macro
References: bnc#907268, CVE-2014-8092
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
The 'n' parameter must be surrounded by parens in both places to
prevent precedence from mis-computing things.
Signed-off-by: Keith Packard <keithp(a)keithp.com>
Reviewed-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
include/dix.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/dix.h b/include/dix.h
index 21176a8..921156b 100644
--- a/include/dix.h
+++ b/include/dix.h
@@ -80,7 +80,7 @@ SOFTWARE.
#define REQUEST_FIXED_SIZE(req, n)\
if (((sizeof(req) >> 2) > client->req_len) || \
- ((n >> 2) >= client->req_len) || \
+ (((n) >> 2) >= client->req_len) || \
((((uint64_t) sizeof(req) + (n) + 3) >> 2) != (uint64_t) client->req_len)) \
return(BadLength)
--
1.8.4.5
++++++ U_dix_integer_overflow_in_GetHosts.patch ++++++
Subject: dix: integer overflow in GetHosts()
References: bnc#907268, CVE-2014-8092
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
GetHosts() iterates over all the hosts it has in memory, and copies
them to a buffer. The buffer length is calculated by iterating over
all the hosts and adding up all of their combined length. There is a
potential integer overflow, if there are lots and lots of hosts (with
a combined length of > ~4 gig). This should be possible by repeatedly
calling ProcChangeHosts() on 64bit machines with enough memory.
This patch caps the list at 1mb, because multi-megabyte hostname
lists for X access control are insane.
Reported-by: Ilja Van Sprundel <ivansprundel(a)ioactive.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
---
os/access.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/os/access.c b/os/access.c
index 5c510de..f393c8d 100644
--- a/os/access.c
+++ b/os/access.c
@@ -1296,6 +1296,10 @@ GetHosts(void **data, int *pnHosts, int *pLen, BOOL * pEnabled)
for (host = validhosts; host; host = host->next) {
nHosts++;
n += pad_to_int32(host->len) + sizeof(xHostEntry);
+ /* Could check for INT_MAX, but in reality having more than 1mb of
+ hostnames in the access list is ridiculous */
+ if (n >= 1048576)
+ break;
}
if (n) {
*data = ptr = malloc(n);
@@ -1304,6 +1308,8 @@ GetHosts(void **data, int *pnHosts, int *pLen, BOOL * pEnabled)
}
for (host = validhosts; host; host = host->next) {
len = host->len;
+ if ((ptr + sizeof(xHostEntry) + len) > (data + n))
+ break;
((xHostEntry *) ptr)->family = host->family;
((xHostEntry *) ptr)->length = len;
ptr += sizeof(xHostEntry);
--
1.7.9.2
++++++ U_dix_integer_overflow_in_ProcPutImage.patch ++++++
Subject: dix: integer overflow in ProcPutImage()
References: bnc#907268, CVE-2014-8092
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
ProcPutImage() calculates a length field from a width, left pad and depth
specified by the client (if the specified format is XYPixmap).
The calculations for the total amount of memory the server needs for the
pixmap can overflow a 32-bit number, causing out-of-bounds memory writes
on 32-bit systems (since the length is stored in a long int variable).
Reported-by: Ilja Van Sprundel <ivansprundel(a)ioactive.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
---
dix/dispatch.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/dix/dispatch.c b/dix/dispatch.c
index d844a09..55b978d 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -2000,6 +2000,9 @@ ProcPutImage(ClientPtr client)
tmpImage = (char *) &stuff[1];
lengthProto = length;
+ if (lengthProto >= (INT32_MAX / stuff->height))
+ return BadLength;
+
if ((bytes_to_int32(lengthProto * stuff->height) +
bytes_to_int32(sizeof(xPutImageReq))) != client->req_len)
return BadLength;
--
1.7.9.2
++++++ U_dix_integer_overflow_in_REQUEST_FIXED_SIZE.patch ++++++
Subject: dix: integer overflow in REQUEST_FIXED_SIZE()
References: bnc#907268, CVE-2014-8092
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
Force use of 64-bit integers when evaluating data provided by clients
in 32-bit fields which can overflow when added or multiplied during
checks.
Reported-by: Ilja Van Sprundel <ivansprundel(a)ioactive.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
---
include/dix.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/include/dix.h b/include/dix.h
index 991a3ce..e0c6ed8 100644
--- a/include/dix.h
+++ b/include/dix.h
@@ -76,7 +76,8 @@ SOFTWARE.
#define REQUEST_FIXED_SIZE(req, n)\
if (((sizeof(req) >> 2) > client->req_len) || \
- (((sizeof(req) + (n) + 3) >> 2) != client->req_len)) \
+ ((n >> 2) >= client->req_len) || \
+ ((((uint64_t) sizeof(req) + (n) + 3) >> 2) != (uint64_t) client->req_len)) \
return(BadLength)
#define LEGAL_NEW_RESOURCE(id,client)\
--
1.7.9.2
++++++ U_dix_integer_overflow_in_RegionSizeof.patch ++++++
Subject: dix: integer overflow in RegionSizeof()
References: bnc#907268, CVE-2014-8092
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
RegionSizeof contains several integer overflows if a large length
value is passed in. Once we fix it to return 0 on overflow, we
also have to fix the callers to handle this error condition
v2: Fixed limit calculation in RegionSizeof as pointed out by jcristau.
Reported-by: Ilja Van Sprundel <ivansprundel(a)ioactive.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
Reviewed-by: Julien Cristau <jcristau(a)debian.org>
---
dix/region.c | 20 +++++++++++++-------
include/regionstr.h | 10 +++++++---
2 files changed, 20 insertions(+), 10 deletions(-)
Index: xorg-server-1.15.2/dix/region.c
===================================================================
--- xorg-server-1.15.2.orig/dix/region.c
+++ xorg-server-1.15.2/dix/region.c
@@ -169,7 +169,6 @@ Equipment Corporation.
((r1)->y1 <= (r2)->y1) && \
((r1)->y2 >= (r2)->y2) )
-#define xallocData(n) malloc(RegionSizeof(n))
#define xfreeData(reg) if ((reg)->data && (reg)->data->size) free((reg)->data)
#define RECTALLOC_BAIL(pReg,n,bail) \
@@ -205,8 +204,9 @@ if (!(pReg)->data || (((pReg)->data->num
#define DOWNSIZE(reg,numRects) \
if (((numRects) < ((reg)->data->size >> 1)) && ((reg)->data->size > 50)) \
{ \
- RegDataPtr NewData; \
- NewData = (RegDataPtr)realloc((reg)->data, RegionSizeof(numRects)); \
+ size_t NewSize = RegionSizeof(numRects); \
+ RegDataPtr NewData = \
+ (NewSize > 0) ? realloc((reg)->data, NewSize) : NULL ; \
if (NewData) \
{ \
NewData->size = (numRects); \
@@ -345,17 +345,20 @@ Bool
RegionRectAlloc(RegionPtr pRgn, int n)
{
RegDataPtr data;
+ size_t rgnSize;
if (!pRgn->data) {
n++;
- pRgn->data = xallocData(n);
+ rgnSize = RegionSizeof(n);
+ pRgn->data = (rgnSize > 0) ? malloc(rgnSize) : NULL;
if (!pRgn->data)
return RegionBreak(pRgn);
pRgn->data->numRects = 1;
*RegionBoxptr(pRgn) = pRgn->extents;
}
else if (!pRgn->data->size) {
- pRgn->data = xallocData(n);
+ rgnSize = RegionSizeof(n);
+ pRgn->data = (rgnSize > 0) ? malloc(rgnSize) : NULL;
if (!pRgn->data)
return RegionBreak(pRgn);
pRgn->data->numRects = 0;
@@ -367,7 +370,8 @@ RegionRectAlloc(RegionPtr pRgn, int n)
n = 250;
}
n += pRgn->data->numRects;
- data = (RegDataPtr) realloc(pRgn->data, RegionSizeof(n));
+ rgnSize = RegionSizeof(n);
+ data = (rgnSize > 0) ? realloc(pRgn->data, rgnSize) : NULL;
if (!data)
return RegionBreak(pRgn);
pRgn->data = data;
@@ -1312,6 +1316,7 @@ RegionFromRects(int nrects, xRectangle *
{
RegionPtr pRgn;
+ size_t rgnSize;
RegDataPtr pData;
BoxPtr pBox;
int i;
@@ -1338,7 +1343,8 @@ RegionFromRects(int nrects, xRectangle *
}
return pRgn;
}
- pData = xallocData(nrects);
+ rgnSize = RegionSizeof(nrects);
+ pData = (rgnSize > 0) ? malloc(rgnSize) : NULL;
if (!pData) {
RegionBreak(pRgn);
return pRgn;
Index: xorg-server-1.15.2/include/regionstr.h
===================================================================
--- xorg-server-1.15.2.orig/include/regionstr.h
+++ xorg-server-1.15.2/include/regionstr.h
@@ -127,7 +127,10 @@ RegionEnd(RegionPtr reg)
static inline size_t
RegionSizeof(int n)
{
- return (sizeof(RegDataRec) + ((n) * sizeof(BoxRec)));
+ if (n < ((INT_MAX - sizeof(RegDataRec)) / sizeof(BoxRec)))
+ return (sizeof(RegDataRec) + ((n) * sizeof(BoxRec)));
+ else
+ return 0;
}
static inline void
@@ -138,9 +141,10 @@ RegionInit(RegionPtr _pReg, BoxPtr _rect
(_pReg)->data = (RegDataPtr) NULL;
}
else {
+ size_t rgnSize;
(_pReg)->extents = RegionEmptyBox;
- if (((_size) > 1) && ((_pReg)->data =
- (RegDataPtr) malloc(RegionSizeof(_size)))) {
+ if (((_size) > 1) && ((rgnSize = RegionSizeof(_size)) > 0) &&
+ (((_pReg)->data = malloc(rgnSize)) != NULL)) {
(_pReg)->data->size = (_size);
(_pReg)->data->numRects = 0;
}
++++++ U_dri2_integer_overflow_in_ProcDRI2GetBuffers.patch ++++++
Subject: dri2: integer overflow in ProcDRI2GetBuffers()
References: bnc#907268, CVE-2014-8094
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
ProcDRI2GetBuffers() tries to validate a length field (count).
There is an integer overflow in the validation. This can cause
out of bound reads and memory corruption later on.
Reported-by: Ilja Van Sprundel <ivansprundel(a)ioactive.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
Reviewed-by: Julien Cristau <jcristau(a)debian.org>
---
hw/xfree86/dri2/dri2ext.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c
index ffd66fa..221ec53 100644
--- a/hw/xfree86/dri2/dri2ext.c
+++ b/hw/xfree86/dri2/dri2ext.c
@@ -270,6 +270,9 @@ ProcDRI2GetBuffers(ClientPtr client)
unsigned int *attachments;
REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * 4);
+ if (stuff->count > (INT_MAX / 4))
+ return BadLength;
+
if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess,
&pDrawable, &status))
return status;
--
1.7.9.2
++++++ U_ephyr_add_output_option_support.patch ++++++
>From 3a51418b2db353519a1779cf3cebbcc9afba2520 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?=
<laerciosousa(a)sme-mogidascruzes.sp.gov.br>
Date: Mon, 18 Aug 2014 08:45:43 -0300
Subject: ephyr: set screen size & origin from host X server output's CRTC
geometry
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
If a given output is passed via new -output option, Xephyr will query
host X server for its info. If the following conditions are met:
a. RandR extension is enabled in host X server;
b. supported RandR version in host X server is 1.2 or newer;
c. the given output name is valid;
d. the given output is connected;
then Xephyr will get output's CRTC geometry and use it to set its own
screen size and origin. It's just like starting Xephyr in fullscreen mode,
but restricted to the given output's CRTC geometry (fake "Zaphod mode").
This is the main feature needed for Xephyr-based single-card multiseat
setups where we don't have separate screens to start Xephyr in fullscreen
mode safely.
Signed-off-by: Laércio de Sousa <laerciosousa(a)sme-mogidascruzes.sp.gov.br>
Reviewed-by: Keith Packard <keithp(a)keithp.com>
Signed-off-by: Keith Packard <keithp(a)keithp.com>
diff --git a/configure.ac b/configure.ac
index f3d9654..cba7d24 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2364,7 +2364,7 @@ if test "$KDRIVE" = yes; then
AC_DEFINE(KDRIVE_MOUSE, 1, [Enable KDrive mouse driver])
fi
- XEPHYR_REQUIRED_LIBS="xau xdmcp xcb xcb-shape xcb-aux xcb-image xcb-icccm xcb-shm xcb-keysyms"
+ XEPHYR_REQUIRED_LIBS="xau xdmcp xcb xcb-shape xcb-aux xcb-image xcb-icccm xcb-shm xcb-keysyms xcb-randr"
if test "x$XV" = xyes; then
XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xcb-xv"
fi
diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index b039c68..85d4193 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -111,13 +111,16 @@ Bool
ephyrScreenInitialize(KdScreenInfo *screen)
{
EphyrScrPriv *scrpriv = screen->driver;
+ int x = 0, y = 0;
int width = 640, height = 480;
CARD32 redMask, greenMask, blueMask;
- if (hostx_want_screen_size(screen, &width, &height)
+ if (hostx_want_screen_geometry(screen, &width, &height, &x, &y)
|| !screen->width || !screen->height) {
screen->width = width;
screen->height = height;
+ screen->x = x;
+ screen->y = y;
}
if (EphyrWantGrayScale)
diff --git a/hw/kdrive/ephyr/ephyr.h b/hw/kdrive/ephyr/ephyr.h
index 5c4936b..4e753f1 100644
--- a/hw/kdrive/ephyr/ephyr.h
+++ b/hw/kdrive/ephyr/ephyr.h
@@ -74,8 +74,10 @@ typedef struct _ephyrScrPriv {
xcb_window_t peer_win; /* Used for GL; should be at most one */
xcb_image_t *ximg;
Bool win_explicit_position;
+ int win_x, win_y;
int win_width, win_height;
int server_depth;
+ const char *output; /* Set via -output option */
unsigned char *fb_data; /* only used when host bpp != server bpp */
xcb_shm_segment_info_t shminfo;
diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
index e04c8dc..38acc52 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -47,6 +47,8 @@ extern KdPointerDriver LinuxEvdevMouseDriver;
extern KdKeyboardDriver LinuxEvdevKeyboardDriver;
#endif
+void processScreenOrOutputArg(const char *screen_size, const char *output, char *parent_id);
+void processOutputArg(const char *output, char *parent_id);
void processScreenArg(const char *screen_size, char *parent_id);
void
@@ -134,6 +136,7 @@ ddxUseMsg(void)
ErrorF("-parent <XID> Use existing window as Xephyr root win\n");
ErrorF("-sw-cursor Render cursors in software in Xephyr\n");
ErrorF("-fullscreen Attempt to run Xephyr fullscreen\n");
+ ErrorF("-output <NAME> Attempt to run Xephyr fullscreen (restricted to given output geometry)\n");
ErrorF("-grayscale Simulate 8bit grayscale\n");
ErrorF("-resizeable Make Xephyr windows resizeable\n");
#ifdef GLAMOR
@@ -154,7 +157,7 @@ ddxUseMsg(void)
}
void
-processScreenArg(const char *screen_size, char *parent_id)
+processScreenOrOutputArg(const char *screen_size, const char *output, char *parent_id)
{
KdCardInfo *card;
@@ -178,13 +181,25 @@ processScreenArg(const char *screen_size, char *parent_id)
use_geometry = (strchr(screen_size, '+') != NULL);
EPHYR_DBG("screen number:%d\n", screen->mynum);
- hostx_add_screen(screen, p_id, screen->mynum, use_geometry);
+ hostx_add_screen(screen, p_id, screen->mynum, use_geometry, output);
}
else {
ErrorF("No matching card found!\n");
}
}
+void
+processScreenArg(const char *screen_size, char *parent_id)
+{
+ processScreenOrOutputArg(screen_size, NULL, parent_id);
+}
+
+void
+processOutputArg(const char *output, char *parent_id)
+{
+ processScreenOrOutputArg("100x100+0+0", output, parent_id);
+}
+
int
ddxProcessArgument(int argc, char **argv, int i)
{
@@ -226,6 +241,15 @@ ddxProcessArgument(int argc, char **argv, int i)
UseMsg();
exit(1);
}
+ else if (!strcmp(argv[i], "-output")) {
+ if (i + 1 < argc) {
+ processOutputArg(argv[i + 1], NULL);
+ return 2;
+ }
+
+ UseMsg();
+ exit(1);
+ }
else if (!strcmp(argv[i], "-sw-cursor")) {
hostx_use_sw_cursor();
return 1;
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 92a8ada..2161ad5 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -51,6 +51,7 @@
#include <xcb/xcb_image.h>
#include <xcb/shape.h>
#include <xcb/xcb_keysyms.h>
+#include <xcb/randr.h>
#ifdef XF86DRI
#include <xcb/xf86dri.h>
#include <xcb/glx.h>
@@ -104,12 +105,15 @@ static void
#define host_depth_matches_server(_vars) (HostX.depth == (_vars)->server_depth)
int
-hostx_want_screen_size(KdScreenInfo *screen, int *width, int *height)
+hostx_want_screen_geometry(KdScreenInfo *screen, int *width, int *height, int *x, int *y)
{
EphyrScrPriv *scrpriv = screen->driver;
if (scrpriv && (scrpriv->win_pre_existing != None ||
+ scrpriv->output != NULL ||
HostX.use_fullscreen == TRUE)) {
+ *x = scrpriv->win_x;
+ *y = scrpriv->win_y;
*width = scrpriv->win_width;
*height = scrpriv->win_height;
return 1;
@@ -119,7 +123,7 @@ hostx_want_screen_size(KdScreenInfo *screen, int *width, int *height)
}
void
-hostx_add_screen(KdScreenInfo *screen, unsigned long win_id, int screen_num, Bool use_geometry)
+hostx_add_screen(KdScreenInfo *screen, unsigned long win_id, int screen_num, Bool use_geometry, const char *output)
{
EphyrScrPriv *scrpriv = screen->driver;
int index = HostX.n_screens;
@@ -132,6 +136,7 @@ hostx_add_screen(KdScreenInfo *screen, unsigned long win_id, int screen_num, Boo
scrpriv->screen = screen;
scrpriv->win_pre_existing = win_id;
scrpriv->win_explicit_position = use_geometry;
+ scrpriv->output = output;
}
void
@@ -211,6 +216,119 @@ hostx_want_preexisting_window(KdScreenInfo *screen)
}
void
+hostx_get_output_geometry(const char *output,
+ int *x, int *y,
+ int *width, int *height)
+{
+ int i, name_len = 0, output_found = FALSE;
+ char *name = NULL;
+ xcb_generic_error_t *error;
+ xcb_randr_query_version_cookie_t version_c;
+ xcb_randr_query_version_reply_t *version_r;
+ xcb_randr_get_screen_resources_cookie_t screen_resources_c;
+ xcb_randr_get_screen_resources_reply_t *screen_resources_r;
+ xcb_randr_output_t *randr_outputs;
+ xcb_randr_get_output_info_cookie_t output_info_c;
+ xcb_randr_get_output_info_reply_t *output_info_r;
+ xcb_randr_get_crtc_info_cookie_t crtc_info_c;
+ xcb_randr_get_crtc_info_reply_t *crtc_info_r;
+
+ /* First of all, check for extension */
+ if (!xcb_get_extension_data(HostX.conn, &xcb_randr_id)->present)
+ {
+ fprintf(stderr, "\nHost X server does not support RANDR extension (or it's disabled).\n");
+ exit(1);
+ }
+
+ /* Check RandR version */
+ version_c = xcb_randr_query_version(HostX.conn, 1, 2);
+ version_r = xcb_randr_query_version_reply(HostX.conn,
+ version_c,
+ &error);
+
+ if (error != NULL || version_r == NULL)
+ {
+ fprintf(stderr, "\nFailed to get RandR version supported by host X server.\n");
+ exit(1);
+ }
+ else if (version_r->major_version < 1 || version_r->minor_version < 2)
+ {
+ free(version_r);
+ fprintf(stderr, "\nHost X server doesn't support RandR 1.2, needed for -output usage.\n");
+ exit(1);
+ }
+
+ free(version_r);
+
+ /* Get list of outputs from screen resources */
+ screen_resources_c = xcb_randr_get_screen_resources(HostX.conn,
+ HostX.winroot);
+ screen_resources_r = xcb_randr_get_screen_resources_reply(HostX.conn,
+ screen_resources_c,
+ NULL);
+ randr_outputs = xcb_randr_get_screen_resources_outputs(screen_resources_r);
+
+ for (i = 0; !output_found && i < screen_resources_r->num_outputs; i++)
+ {
+ /* Get info on the output */
+ output_info_c = xcb_randr_get_output_info(HostX.conn,
+ randr_outputs[i],
+ XCB_CURRENT_TIME);
+ output_info_r = xcb_randr_get_output_info_reply(HostX.conn,
+ output_info_c,
+ NULL);
+
+ /* Get output name */
+ name_len = xcb_randr_get_output_info_name_length(output_info_r);
+ name = malloc(name_len + 1);
+ strncpy(name, (char*)xcb_randr_get_output_info_name(output_info_r), name_len);
+ name[name_len] = '\0';
+
+ if (!strcmp(name, output))
+ {
+ output_found = TRUE;
+
+ /* Check if output is connected */
+ if (output_info_r->crtc == XCB_NONE)
+ {
+ free(name);
+ free(output_info_r);
+ free(screen_resources_r);
+ fprintf(stderr, "\nOutput %s is currently disabled (or not connected).\n", output);
+ exit(1);
+ }
+
+ /* Get CRTC from output info */
+ crtc_info_c = xcb_randr_get_crtc_info(HostX.conn,
+ output_info_r->crtc,
+ XCB_CURRENT_TIME);
+ crtc_info_r = xcb_randr_get_crtc_info_reply(HostX.conn,
+ crtc_info_c,
+ NULL);
+
+ /* Get CRTC geometry */
+ *x = crtc_info_r->x;
+ *y = crtc_info_r->y;
+ *width = crtc_info_r->width;
+ *height = crtc_info_r->height;
+
+ free(crtc_info_r);
+ }
+
+ free(name);
+ free(output_info_r);
+ }
+
+ free(screen_resources_r);
+
+ if (!output_found)
+ {
+ fprintf(stderr, "\nOutput %s not available in host X server.\n", output);
+ exit(1);
+ }
+}
+
+void
hostx_use_fullscreen(void)
{
HostX.use_fullscreen = TRUE;
@@ -359,6 +477,8 @@ hostx_init(void)
scrpriv->win = xcb_generate_id(HostX.conn);
scrpriv->server_depth = HostX.depth;
scrpriv->ximg = NULL;
+ scrpriv->win_x = 0;
+ scrpriv->win_y = 0;
if (scrpriv->win_pre_existing != XCB_WINDOW_NONE) {
xcb_get_geometry_reply_t *prewin_geom;
@@ -416,6 +536,17 @@ hostx_init(void)
hostx_set_fullscreen_hint();
}
+ else if (scrpriv->output) {
+ hostx_get_output_geometry(scrpriv->output,
+ &scrpriv->win_x,
+ &scrpriv->win_y,
+ &scrpriv->win_width,
+ &scrpriv->win_height);
+
+ HostX.use_fullscreen = TRUE;
+ hostx_set_fullscreen_hint();
+ }
+
tmpstr = getenv("RESOURCE_NAME");
if (tmpstr && (!ephyrResNameFromCmd))
@@ -759,6 +890,8 @@ hostx_screen_init(KdScreenInfo *screen,
scrpriv->win_width = width;
scrpriv->win_height = height;
+ scrpriv->win_x = x;
+ scrpriv->win_y = y;
#ifdef GLAMOR
if (ephyr_glamor) {
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index c554ca3..80894c8 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -74,7 +74,7 @@ typedef struct {
} EphyrRect;
int
-hostx_want_screen_size(KdScreenInfo *screen, int *width, int *height);
+hostx_want_screen_geometry(KdScreenInfo *screen, int *width, int *height, int *x, int *y);
int
hostx_want_host_cursor(void);
@@ -83,6 +83,11 @@ void
hostx_use_sw_cursor(void);
void
+ hostx_get_output_geometry(const char *output,
+ int *x, int *y,
+ int *width, int *height);
+
+void
hostx_use_fullscreen(void);
int
@@ -107,7 +112,7 @@ int
hostx_init(void);
void
-hostx_add_screen(KdScreenInfo *screen, unsigned long win_id, int screen_num, Bool use_geometry);
+hostx_add_screen(KdScreenInfo *screen, unsigned long win_id, int screen_num, Bool use_geometry, const char *output);
void
hostx_set_display_name(char *name);
--
cgit v0.10.2
++++++ U_ephyr_enable_screen_window_placement.patch ++++++
>From 84b02469ef97e6f85d074d220a517d752180045f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?=
<laerciosousa(a)sme-mogidascruzes.sp.gov.br>
Date: Mon, 18 Aug 2014 08:45:42 -0300
Subject: ephyr: enable screen window placement following kdrive -screen option
extended syntax
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
With this patch, one can launch Xephyr with option "-screen WxH+X+Y"
to place its window origin at (X,Y). This patch relies on a previous
one that extends kdrive -screen option syntax to parse +X+Y substring
as expected.
If +X+Y is not passed in -screen argument string, let the WM place
the window for us, as before.
Signed-off-by: Laércio de Sousa <laerciosousa(a)sme-mogidascruzes.sp.gov.br>
Reviewed-by: Keith Packard <keithp(a)keithp.com>
Signed-off-by: Keith Packard <keithp(a)keithp.com>
diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index d57e9f3..b039c68 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -242,7 +242,8 @@ ephyrMapFramebuffer(KdScreenInfo * screen)
buffer_height = ephyrBufferHeight(screen);
priv->base =
- hostx_screen_init(screen, screen->width, screen->height, buffer_height,
+ hostx_screen_init(screen, screen->x, screen->y,
+ screen->width, screen->height, buffer_height,
&priv->bytes_per_line, &screen->fb.bitsPerPixel);
if ((scrpriv->randr & RR_Rotate_0) && !(scrpriv->randr & RR_Reflect_All)) {
diff --git a/hw/kdrive/ephyr/ephyr.h b/hw/kdrive/ephyr/ephyr.h
index dfd93c9..5c4936b 100644
--- a/hw/kdrive/ephyr/ephyr.h
+++ b/hw/kdrive/ephyr/ephyr.h
@@ -73,6 +73,7 @@ typedef struct _ephyrScrPriv {
xcb_window_t win_pre_existing; /* Set via -parent option like xnest */
xcb_window_t peer_win; /* Used for GL; should be at most one */
xcb_image_t *ximg;
+ Bool win_explicit_position;
int win_width, win_height;
int server_depth;
unsigned char *fb_data; /* only used when host bpp != server bpp */
diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
index fc00010..e04c8dc 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -164,6 +164,7 @@ processScreenArg(const char *screen_size, char *parent_id)
if (card) {
KdScreenInfo *screen;
unsigned long p_id = 0;
+ Bool use_geometry;
screen = KdScreenInfoAdd(card);
KdParseScreen(screen, screen_size);
@@ -174,8 +175,10 @@ processScreenArg(const char *screen_size, char *parent_id)
if (parent_id) {
p_id = strtol(parent_id, NULL, 0);
}
+
+ use_geometry = (strchr(screen_size, '+') != NULL);
EPHYR_DBG("screen number:%d\n", screen->mynum);
- hostx_add_screen(screen, p_id, screen->mynum);
+ hostx_add_screen(screen, p_id, screen->mynum, use_geometry);
}
else {
ErrorF("No matching card found!\n");
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 1c75974..92a8ada 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -119,7 +119,7 @@ hostx_want_screen_size(KdScreenInfo *screen, int *width, int *height)
}
void
-hostx_add_screen(KdScreenInfo *screen, unsigned long win_id, int screen_num)
+hostx_add_screen(KdScreenInfo *screen, unsigned long win_id, int screen_num, Bool use_geometry)
{
EphyrScrPriv *scrpriv = screen->driver;
int index = HostX.n_screens;
@@ -131,6 +131,7 @@ hostx_add_screen(KdScreenInfo *screen, unsigned long win_id, int screen_num)
scrpriv->screen = screen;
scrpriv->win_pre_existing = win_id;
+ scrpriv->win_explicit_position = use_geometry;
}
void
@@ -637,6 +638,7 @@ hostx_set_cmap_entry(unsigned char idx,
*/
void *
hostx_screen_init(KdScreenInfo *screen,
+ int x, int y,
int width, int height, int buffer_height,
int *bytes_per_line, int *bits_per_pixel)
{
@@ -648,8 +650,8 @@ hostx_screen_init(KdScreenInfo *screen,
exit(1);
}
- EPHYR_DBG("host_screen=%p wxh=%dx%d, buffer_height=%d",
- host_screen, width, height, buffer_height);
+ EPHYR_DBG("host_screen=%p x=%d, y=%d, wxh=%dx%d, buffer_height=%d",
+ host_screen, x, y, width, height, buffer_height);
if (scrpriv->ximg != NULL) {
/* Free up the image data if previously used
@@ -740,6 +742,19 @@ hostx_screen_init(KdScreenInfo *screen,
xcb_map_window(HostX.conn, scrpriv->win);
+ /* Set explicit window position if it was informed in
+ * -screen option (WxH+X or WxH+X+Y). Otherwise, accept the
+ * position set by WM.
+ * The trick here is putting this code after xcb_map_window() call,
+ * so these values won't be overriden by WM. */
+ if (scrpriv->win_explicit_position)
+ {
+ uint32_t mask = XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y;
+ uint32_t values[2] = {x, y};
+ xcb_configure_window(HostX.conn, scrpriv->win, mask, values);
+ }
+
+
xcb_aux_sync(HostX.conn);
scrpriv->win_width = width;
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index e83323a..c554ca3 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -107,7 +107,7 @@ int
hostx_init(void);
void
-hostx_add_screen(KdScreenInfo *screen, unsigned long win_id, int screen_num);
+hostx_add_screen(KdScreenInfo *screen, unsigned long win_id, int screen_num, Bool use_geometry);
void
hostx_set_display_name(char *name);
@@ -136,6 +136,7 @@ hostx_set_cmap_entry(unsigned char idx,
unsigned char r, unsigned char g, unsigned char b);
void *hostx_screen_init(KdScreenInfo *screen,
+ int x, int y,
int width, int height, int buffer_height,
int *bytes_per_line, int *bits_per_pixel);
--
cgit v0.10.2
++++++ U_export_key_is_down_and_friends.patch ++++++
Author: Peter Hutterer <peter.hutterer(a)who-t.net>
Subject: [PATCH] include: export key_is_down and friends
Patch-Mainline: Upstream
Git-commit: 8ff7e32c3ef7b0c13c4ab9664f651e9782d35a85
Signed-off-by: Michal Srb <msrb(a)suse.com>
References: bnc#867863
VNC needs key_is_down to check if a key is processed as down before it
simulates various key releases. Make it available, because I seriously can't
be bothered thinking about how to rewrite VNC to not need that.
Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
Acked-by: Keith Packard <keithp(a)keithp.com>
diff --git a/include/input.h b/include/input.h
index 350daba..2d5e531 100644
--- a/include/input.h
+++ b/include/input.h
@@ -244,12 +244,12 @@ typedef struct _InputAttributes {
#define KEY_POSTED 2
#define BUTTON_POSTED 2
-extern void set_key_down(DeviceIntPtr pDev, int key_code, int type);
-extern void set_key_up(DeviceIntPtr pDev, int key_code, int type);
-extern int key_is_down(DeviceIntPtr pDev, int key_code, int type);
-extern void set_button_down(DeviceIntPtr pDev, int button, int type);
-extern void set_button_up(DeviceIntPtr pDev, int button, int type);
-extern int button_is_down(DeviceIntPtr pDev, int button, int type);
+extern _X_EXPORT void set_key_down(DeviceIntPtr pDev, int key_code, int type);
+extern _X_EXPORT void set_key_up(DeviceIntPtr pDev, int key_code, int type);
+extern _X_EXPORT int key_is_down(DeviceIntPtr pDev, int key_code, int type);
+extern _X_EXPORT void set_button_down(DeviceIntPtr pDev, int button, int type);
+extern _X_EXPORT void set_button_up(DeviceIntPtr pDev, int button, int type);
+extern _X_EXPORT int button_is_down(DeviceIntPtr pDev, int button, int type);
extern void InitCoreDevices(void);
extern void InitXTestDevices(void);
++++++ U_expose_getmaster_to_modules.patch ++++++
Author: Michal Srb <msrb(a)suse.com>
Subject: [PATCH] Expose GetMaster to modules.
Patch-Mainline: Upstream
Git-commit: 5c4202ea85aaea2a4dc7eb29776357a2ba13e191
References: bnc#867863
Add _X_EXPORT to GetMaster function. It is required by tigervnc's VNC module.
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
diff --git a/include/input.h b/include/input.h
index cb83cac..00a9cbd 100644
--- a/include/input.h
+++ b/include/input.h
@@ -504,7 +504,7 @@ extern int AttachDevice(ClientPtr client,
DeviceIntPtr slave, DeviceIntPtr master);
extern _X_EXPORT DeviceIntPtr GetPairedDevice(DeviceIntPtr kbd);
-extern DeviceIntPtr GetMaster(DeviceIntPtr dev, int type);
+extern _X_EXPORT DeviceIntPtr GetMaster(DeviceIntPtr dev, int type);
extern _X_EXPORT int AllocDevicePair(ClientPtr client,
const char *name,
++++++ U_fb_Fix_Bresenham_algorithms_for_commonly_used_small_segments.patch ++++++
Subject: fb: Fix Bresenham algorithms for commonly used small segments.
Git-commit: 1b94fd77792310c80b0a2bcf4bf6d4e4c4c23bca
Author: Alex Orange <crazycasta(a)gmail.com>
Patch-Mainline: Upstream
References: bnc#908258, bnc#856931, fdo#54168
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=54168
Fix errors introducted in 863d528a9f76d0e8f122aebf19f8564a4c67a938. Said
patch does indeed remove the problematic writes to bad memory, however
it also introduces errors in the algoritm. This patch has the effect of
reverting said patch and adding an if in the proper location to catch
the out of bounds memory write without causing problems to the overall
algorithm.
Signed-off-by: Alex Orange <crazycasta(a)gmail.com>
Reviewed-by: Peter Harris <pharris(a)opentext.com>
Tested-by: Peter Harris <pharris(a)opentext.com>
Signed-off-by: Keith Packard <keithp(a)keithp.com>
---
fb/fbseg.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/fb/fbseg.c b/fb/fbseg.c
index 36b17e3..c3c196a 100644
--- a/fb/fbseg.c
+++ b/fb/fbseg.c
@@ -65,12 +65,6 @@ fbBresSolid(DrawablePtr pDrawable,
if (axis == X_AXIS) {
bits = 0;
while (len--) {
- if (e >= 0) {
- WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, bits));
- bits = 0;
- dst += dstStride;
- e += e3;
- }
bits |= mask;
mask = fbBresShiftMask(mask, signdx, dstBpp);
if (!mask) {
@@ -80,12 +74,23 @@ fbBresSolid(DrawablePtr pDrawable,
mask = mask0;
}
e += e1;
+ if (e >= 0) {
+ if (bits) {
+ WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, bits));
+ bits = 0;
+ }
+ dst += dstStride;
+ e += e3;
+ }
}
if (bits)
WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, bits));
}
else {
while (len--) {
+ WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, mask));
+ dst += dstStride;
+ e += e1;
if (e >= 0) {
e += e3;
mask = fbBresShiftMask(mask, signdx, dstBpp);
@@ -94,9 +99,6 @@ fbBresSolid(DrawablePtr pDrawable,
mask = mask0;
}
}
- WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, mask));
- dst += dstStride;
- e += e1;
}
}
--
1.8.4.5
++++++ U_glx_Add_safe__add_mul_pad.patch ++++++
Subject: glx: Add safe_{add,mul,pad} (v3)
References: bnc#907268, CVE-2014-8093
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
These are paranoid about integer overflow, and will return -1 if their
operation would overflow a (signed) integer or if either argument is
negative.
Note that RenderLarge requests are sized with a uint32_t so in principle
this could be sketchy there, but dix limits bigreqs to 128M so you
shouldn't ever notice, and honestly if you're sending more than 2G of
rendering commands you're already doing something very wrong.
v2: Use INT_MAX for consistency with the rest of the server (jcristau)
v3: Reject negative arguments (anholt)
Reviewed-by: Keith Packard <keithp(a)keithp.com>
Reviewed-by: Julien Cristau <jcristau(a)debian.org>
Reviewed-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Andy Ritger <aritger(a)nvidia.com>
Signed-off-by: Adam Jackson <ajax(a)redhat.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
glx/glxserver.h | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/glx/glxserver.h b/glx/glxserver.h
index a324b29..9482601 100644
--- a/glx/glxserver.h
+++ b/glx/glxserver.h
@@ -228,6 +228,47 @@ extern void glxSwapQueryServerStringReply(ClientPtr client,
* Routines for computing the size of variably-sized rendering commands.
*/
+static _X_INLINE int
+safe_add(int a, int b)
+{
+ if (a < 0 || b < 0)
+ return -1;
+
+ if (INT_MAX - a < b)
+ return -1;
+
+ return a + b;
+}
+
+static _X_INLINE int
+safe_mul(int a, int b)
+{
+ if (a < 0 || b < 0)
+ return -1;
+
+ if (a == 0 || b == 0)
+ return 0;
+
+ if (a > INT_MAX / b)
+ return -1;
+
+ return a * b;
+}
+
+static _X_INLINE int
+safe_pad(int a)
+{
+ int ret;
+
+ if (a < 0)
+ return -1;
+
+ if ((ret = safe_add(a, 3)) < 0)
+ return -1;
+
+ return ret & (GLuint)~3;
+}
+
extern int __glXTypeSize(GLenum enm);
extern int __glXImageSize(GLenum format, GLenum type,
GLenum target, GLsizei w, GLsizei h, GLsizei d,
--
1.7.9.2
++++++ U_glx_Additional_paranoia_in___glXGetAnswerBuffer___GLX_GET_ANSWER_BUFFER.patch ++++++
Subject: glx: Additional paranoia in __glXGetAnswerBuffer / __GLX_GET_ANSWER_BUFFER (v2)
References: bnc#907268, CVE-2014-8093
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
If the computed reply size is negative, something went wrong, treat it
as an error.
v2: Be more careful about size_t being unsigned (Matthieu Herrb)
v3: SIZE_MAX not SIZE_T_MAX (Alan Coopersmith)
Reviewed-by: Julien Cristau <jcristau(a)debian.org>
Reviewed-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Andy Ritger <aritger(a)nvidia.com>
Signed-off-by: Adam Jackson <ajax(a)redhat.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
glx/indirect_util.c | 7 ++++++-
glx/unpack.h | 3 ++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/glx/indirect_util.c b/glx/indirect_util.c
index 926e57c..de81491 100644
--- a/glx/indirect_util.c
+++ b/glx/indirect_util.c
@@ -76,9 +76,14 @@ __glXGetAnswerBuffer(__GLXclientState * cl, size_t required_size,
const unsigned mask = alignment - 1;
if (local_size < required_size) {
- const size_t worst_case_size = required_size + alignment;
+ size_t worst_case_size;
intptr_t temp_buf;
+ if (required_size < SIZE_MAX - alignment)
+ worst_case_size = required_size + alignment;
+ else
+ return NULL;
+
if (cl->returnBufSize < worst_case_size) {
void *temp = realloc(cl->returnBuf, worst_case_size);
diff --git a/glx/unpack.h b/glx/unpack.h
index 52fba74..2b1ebcf 100644
--- a/glx/unpack.h
+++ b/glx/unpack.h
@@ -83,7 +83,8 @@ extern xGLXSingleReply __glXReply;
** pointer.
*/
#define __GLX_GET_ANSWER_BUFFER(res,cl,size,align) \
- if ((size) > sizeof(answerBuffer)) { \
+ if (size < 0) return BadLength; \
+ else if ((size) > sizeof(answerBuffer)) { \
int bump; \
if ((cl)->returnBufSize < (size)+(align)) { \
(cl)->returnBuf = (GLbyte*)realloc((cl)->returnBuf, \
--
1.7.9.2
++++++ U_glx_Be_more_paranoid_about_variable_length_requests.patch ++++++
Subject: glx: Be more paranoid about variable-length requests
References: bnc#907268, CVE-2014-8093
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
If the size computation routine returns -1 we should just reject the
request outright. Clamping it to zero could give an attacker the
opportunity to also mangle cmdlen in such a way that the subsequent
length check passes, and the request would get executed, thus passing
data we wanted to reject to the renderer.
Reviewed-by: Keith Packard <keithp(a)keithp.com>
Reviewed-by: Julien Cristau <jcristau(a)debian.org>
Reviewed-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Andy Ritger <aritger(a)nvidia.com>
Signed-off-by: Adam Jackson <ajax(a)redhat.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
glx/glxcmds.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 8d3fa9f..0521b58 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -2060,7 +2060,7 @@ __glXDisp_Render(__GLXclientState * cl, GLbyte * pc)
extra = (*entry.varsize) (pc + __GLX_RENDER_HDR_SIZE,
client->swapped);
if (extra < 0) {
- extra = 0;
+ return BadLength;
}
if (cmdlen != __GLX_PAD(entry.bytes + extra)) {
return BadLength;
@@ -2177,7 +2177,7 @@ __glXDisp_RenderLarge(__GLXclientState * cl, GLbyte * pc)
extra = (*entry.varsize) (pc + __GLX_RENDER_LARGE_HDR_SIZE,
client->swapped);
if (extra < 0) {
- extra = 0;
+ return BadLength;
}
/* large command's header is 4 bytes longer, so add 4 */
if (cmdlen != __GLX_PAD(entry.bytes + 4 + extra)) {
--
1.7.9.2
++++++ U_glx_Be_more_strict_about_rejecting_invalid_image_sizes.patch ++++++
Subject: glx: Be more strict about rejecting invalid image sizes
References: bnc#907268, CVE-2014-8093
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
Before this we'd just clamp the image size to 0, which was just
hideously stupid; if the parameters were such that they'd overflow an
integer, you'd allocate a small buffer, then pass huge values into (say)
ReadPixels, and now you're scribbling over arbitrary server memory.
Reviewed-by: Keith Packard <keithp(a)keithp.com>
Reviewed-by: Julien Cristau <jcristau(a)debian.org>
Reviewed-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Andy Ritger <aritger(a)nvidia.com>
Signed-off-by: Adam Jackson <ajax(a)redhat.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
glx/singlepix.c | 16 ++++++++--------
glx/singlepixswap.c | 16 ++++++++--------
2 files changed, 16 insertions(+), 16 deletions(-)
Index: xorg-server-1.14.3.901/glx/singlepix.c
===================================================================
--- xorg-server-1.14.3.901.orig/glx/singlepix.c
+++ xorg-server-1.14.3.901/glx/singlepix.c
@@ -69,7 +69,7 @@ __glXDisp_ReadPixels(__GLXclientState *
lsbFirst = *(GLboolean *) (pc + 25);
compsize = __glReadPixels_size(format, type, width, height);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_LSB_FIRST, lsbFirst));
@@ -134,7 +134,7 @@ __glXDisp_GetTexImage(__GLXclientState *
compsize =
__glGetTexImage_size(target, level, format, type, width, height, depth);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
__GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
@@ -232,9 +232,9 @@ GetSeparableFilter(__GLXclientState * cl
compsize2 = __glGetTexImage_size(target, 1, format, type, height, 1, 1);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
if (compsize2 < 0)
- compsize2 = 0;
+ return BadLength;
compsize = __GLX_PAD(compsize);
compsize2 = __GLX_PAD(compsize2);
@@ -315,7 +315,7 @@ GetConvolutionFilter(__GLXclientState *
*/
compsize = __glGetTexImage_size(target, 1, format, type, width, height, 1);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
__GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
@@ -386,7 +386,7 @@ GetHistogram(__GLXclientState * cl, GLby
*/
compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
__GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
@@ -447,7 +447,7 @@ GetMinmax(__GLXclientState * cl, GLbyte
compsize = __glGetTexImage_size(target, 1, format, type, 2, 1, 1);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
__GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
@@ -513,7 +513,7 @@ GetColorTable(__GLXclientState * cl, GLb
*/
compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
__GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
Index: xorg-server-1.14.3.901/glx/singlepixswap.c
===================================================================
--- xorg-server-1.14.3.901.orig/glx/singlepixswap.c
+++ xorg-server-1.14.3.901/glx/singlepixswap.c
@@ -79,7 +79,7 @@ __glXDispSwap_ReadPixels(__GLXclientStat
lsbFirst = *(GLboolean *) (pc + 25);
compsize = __glReadPixels_size(format, type, width, height);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_LSB_FIRST, lsbFirst));
@@ -155,7 +155,7 @@ __glXDispSwap_GetTexImage(__GLXclientSta
compsize =
__glGetTexImage_size(target, level, format, type, width, height, depth);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
__GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
@@ -267,9 +267,9 @@ GetSeparableFilter(__GLXclientState * cl
compsize2 = __glGetTexImage_size(target, 1, format, type, height, 1, 1);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
if (compsize2 < 0)
- compsize2 = 0;
+ return BadLength;
compsize = __GLX_PAD(compsize);
compsize2 = __GLX_PAD(compsize2);
@@ -358,7 +358,7 @@ GetConvolutionFilter(__GLXclientState *
*/
compsize = __glGetTexImage_size(target, 1, format, type, width, height, 1);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
__GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
@@ -437,7 +437,7 @@ GetHistogram(__GLXclientState * cl, GLby
*/
compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
__GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
@@ -505,7 +505,7 @@ GetMinmax(__GLXclientState * cl, GLbyte
compsize = __glGetTexImage_size(target, 1, format, type, 2, 1, 1);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
__GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
@@ -577,7 +577,7 @@ GetColorTable(__GLXclientState * cl, GLb
*/
compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1);
if (compsize < 0)
- compsize = 0;
+ return BadLength;
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
__GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
++++++ U_glx_Fix_image_size_computation_for_EXT_texture_integer.patch ++++++
Subject: glx: Fix image size computation for EXT_texture_integer
References: bnc#907268, CVE-2014-8098
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
Without this we'd reject the request with BadLength. Note that some old
versions of Mesa had a bug in the same place, and would _send_ zero
bytes of image data; these will now be rejected, correctly.
Reviewed-by: Keith Packard <keithp(a)keithp.com>
Reviewed-by: Julien Cristau <jcristau(a)debian.org>
Reviewed-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Andy Ritger <aritger(a)nvidia.com>
Signed-off-by: Adam Jackson <ajax(a)redhat.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
glx/rensize.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/glx/rensize.c b/glx/rensize.c
index ba22d10..9ff73c7 100644
--- a/glx/rensize.c
+++ b/glx/rensize.c
@@ -224,6 +224,11 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
case GL_ALPHA:
case GL_LUMINANCE:
case GL_INTENSITY:
+ case GL_RED_INTEGER_EXT:
+ case GL_GREEN_INTEGER_EXT:
+ case GL_BLUE_INTEGER_EXT:
+ case GL_ALPHA_INTEGER_EXT:
+ case GL_LUMINANCE_INTEGER_EXT:
elementsPerGroup = 1;
break;
case GL_422_EXT:
@@ -234,14 +239,19 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
case GL_DEPTH_STENCIL_MESA:
case GL_YCBCR_MESA:
case GL_LUMINANCE_ALPHA:
+ case GL_LUMINANCE_ALPHA_INTEGER_EXT:
elementsPerGroup = 2;
break;
case GL_RGB:
case GL_BGR:
+ case GL_RGB_INTEGER_EXT:
+ case GL_BGR_INTEGER_EXT:
elementsPerGroup = 3;
break;
case GL_RGBA:
case GL_BGRA:
+ case GL_RGBA_INTEGER_EXT:
+ case GL_BGRA_INTEGER_EXT:
case GL_ABGR_EXT:
elementsPerGroup = 4;
break;
--
1.7.9.2
++++++ U_glx_Fix_mask_truncation_in___glXGetAnswerBuffer.patch ++++++
Subject: glx: Fix mask truncation in __glXGetAnswerBuffer
References: bnc#907268, CVE-2014-8093
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
On a system where sizeof(unsigned) != sizeof(intptr_t), the unary
bitwise not operation will result in a mask that clears all high bits
from temp_buf in the expression:
temp_buf = (temp_buf + mask) & ~mask;
Signed-off-by: Robert Morell <rmorell(a)nvidia.com>
Reviewed-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
glx/indirect_util.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/glx/indirect_util.c b/glx/indirect_util.c
index de81491..9ba2815 100644
--- a/glx/indirect_util.c
+++ b/glx/indirect_util.c
@@ -73,7 +73,7 @@ __glXGetAnswerBuffer(__GLXclientState * cl, size_t required_size,
void *local_buffer, size_t local_size, unsigned alignment)
{
void *buffer = local_buffer;
- const unsigned mask = alignment - 1;
+ const intptr_t mask = alignment - 1;
if (local_size < required_size) {
size_t worst_case_size;
--
1.7.9.2
++++++ U_glx_Integer_overflow_protection_for_non_generated_render_requests.patch ++++++
Subject: glx: Integer overflow protection for non-generated render requests (v3)
References: bnc#907268, CVE-2014-8093
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
v2:
Fix constants in __glXMap2fReqSize (Michal Srb)
Validate w/h/d for proxy targets too (Keith Packard)
v3:
Fix Map[12]Size to correctly reject order == 0 (Julien Cristau)
Reviewed-by: Keith Packard <keithp(a)keithp.com>
Reviewed-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Andy Ritger <aritger(a)nvidia.com>
Signed-off-by: Adam Jackson <ajax(a)redhat.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
glx/rensize.c | 77 ++++++++++++++++++++++++++++++---------------------------
1 file changed, 41 insertions(+), 36 deletions(-)
diff --git a/glx/rensize.c b/glx/rensize.c
index 9ff73c7..d46334a 100644
--- a/glx/rensize.c
+++ b/glx/rensize.c
@@ -43,19 +43,11 @@
(((a & 0xff000000U)>>24) | ((a & 0xff0000U)>>8) | \
((a & 0xff00U)<<8) | ((a & 0xffU)<<24))
-static int
-Map1Size(GLint k, GLint order)
-{
- if (order <= 0 || k < 0)
- return -1;
- return k * order;
-}
-
int
__glXMap1dReqSize(const GLbyte * pc, Bool swap)
{
GLenum target;
- GLint order, k;
+ GLint order;
target = *(GLenum *) (pc + 16);
order = *(GLint *) (pc + 20);
@@ -63,15 +55,16 @@ __glXMap1dReqSize(const GLbyte * pc, Bool swap)
target = SWAPL(target);
order = SWAPL(order);
}
- k = __glMap1d_size(target);
- return 8 * Map1Size(k, order);
+ if (order < 1)
+ return -1;
+ return safe_mul(8, safe_mul(__glMap1d_size(target), order));
}
int
__glXMap1fReqSize(const GLbyte * pc, Bool swap)
{
GLenum target;
- GLint order, k;
+ GLint order;
target = *(GLenum *) (pc + 0);
order = *(GLint *) (pc + 12);
@@ -79,23 +72,24 @@ __glXMap1fReqSize(const GLbyte * pc, Bool swap)
target = SWAPL(target);
order = SWAPL(order);
}
- k = __glMap1f_size(target);
- return 4 * Map1Size(k, order);
+ if (order < 1)
+ return -1;
+ return safe_mul(4, safe_mul(__glMap1f_size(target), order));
}
static int
Map2Size(int k, int majorOrder, int minorOrder)
{
- if (majorOrder <= 0 || minorOrder <= 0 || k < 0)
+ if (majorOrder < 1 || minorOrder < 1)
return -1;
- return k * majorOrder * minorOrder;
+ return safe_mul(k, safe_mul(majorOrder, minorOrder));
}
int
__glXMap2dReqSize(const GLbyte * pc, Bool swap)
{
GLenum target;
- GLint uorder, vorder, k;
+ GLint uorder, vorder;
target = *(GLenum *) (pc + 32);
uorder = *(GLint *) (pc + 36);
@@ -105,15 +99,14 @@ __glXMap2dReqSize(const GLbyte * pc, Bool swap)
uorder = SWAPL(uorder);
vorder = SWAPL(vorder);
}
- k = __glMap2d_size(target);
- return 8 * Map2Size(k, uorder, vorder);
+ return safe_mul(8, Map2Size(__glMap2d_size(target), uorder, vorder));
}
int
__glXMap2fReqSize(const GLbyte * pc, Bool swap)
{
GLenum target;
- GLint uorder, vorder, k;
+ GLint uorder, vorder;
target = *(GLenum *) (pc + 0);
uorder = *(GLint *) (pc + 12);
@@ -123,8 +116,7 @@ __glXMap2fReqSize(const GLbyte * pc, Bool swap)
uorder = SWAPL(uorder);
vorder = SWAPL(vorder);
}
- k = __glMap2f_size(target);
- return 4 * Map2Size(k, uorder, vorder);
+ return safe_mul(4, Map2Size(__glMap2f_size(target), uorder, vorder));
}
/**
@@ -175,14 +167,16 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
GLint bytesPerElement, elementsPerGroup, groupsPerRow;
GLint groupSize, rowSize, padding, imageSize;
+ if (w == 0 || h == 0 || d == 0)
+ return 0;
+
if (w < 0 || h < 0 || d < 0 ||
(type == GL_BITMAP &&
(format != GL_COLOR_INDEX && format != GL_STENCIL_INDEX))) {
return -1;
}
- if (w == 0 || h == 0 || d == 0)
- return 0;
+ /* proxy targets have no data */
switch (target) {
case GL_PROXY_TEXTURE_1D:
case GL_PROXY_TEXTURE_2D:
@@ -199,6 +193,12 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
return 0;
}
+ /* real data has to have real sizes */
+ if (imageHeight < 0 || rowLength < 0 || skipImages < 0 || skipRows < 0)
+ return -1;
+ if (alignment != 1 && alignment != 2 && alignment != 4 && alignment != 8)
+ return -1;
+
if (type == GL_BITMAP) {
if (rowLength > 0) {
groupsPerRow = rowLength;
@@ -207,11 +207,14 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
groupsPerRow = w;
}
rowSize = bits_to_bytes(groupsPerRow);
+ if (rowSize < 0)
+ return -1;
padding = (rowSize % alignment);
if (padding) {
rowSize += alignment - padding;
}
- return ((h + skipRows) * rowSize);
+
+ return safe_mul(safe_add(h, skipRows), rowSize);
}
else {
switch (format) {
@@ -303,6 +306,7 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
default:
return -1;
}
+ /* known safe by the switches above, not checked */
groupSize = bytesPerElement * elementsPerGroup;
if (rowLength > 0) {
groupsPerRow = rowLength;
@@ -310,18 +314,21 @@ __glXImageSize(GLenum format, GLenum type, GLenum target,
else {
groupsPerRow = w;
}
- rowSize = groupsPerRow * groupSize;
+
+ if ((rowSize = safe_mul(groupsPerRow, groupSize)) < 0)
+ return -1;
padding = (rowSize % alignment);
if (padding) {
rowSize += alignment - padding;
}
- if (imageHeight > 0) {
- imageSize = (imageHeight + skipRows) * rowSize;
- }
- else {
- imageSize = (h + skipRows) * rowSize;
- }
- return ((d + skipImages) * imageSize);
+
+ if (imageHeight > 0)
+ h = imageHeight;
+ h = safe_add(h, skipRows);
+
+ imageSize = safe_mul(h, rowSize);
+
+ return safe_mul(safe_add(d, skipImages), imageSize);
}
}
@@ -445,9 +452,7 @@ __glXSeparableFilter2DReqSize(const GLbyte * pc, Bool swap)
/* XXX Should rowLength be used for either or both image? */
image1size = __glXImageSize(format, type, 0, w, 1, 1,
0, rowLength, 0, 0, alignment);
- image1size = __GLX_PAD(image1size);
image2size = __glXImageSize(format, type, 0, h, 1, 1,
0, rowLength, 0, 0, alignment);
- return image1size + image2size;
-
+ return safe_add(safe_pad(image1size), image2size);
}
--
1.7.9.2
++++++ U_glx_Length_checking_for_GLXRender_requests.patch ++++++
Subject: glx: Length checking for GLXRender requests (v2)
References: bnc#907268, CVE-2014-8098
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
v2:
Remove can't-happen comparison for cmdlen < 0 (Michal Srb)
Reviewed-by: Adam Jackson <ajax(a)redhat.com>
Reviewed-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Andy Ritger <aritger(a)nvidia.com>
Signed-off-by: Julien Cristau <jcristau(a)debian.org>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
glx/glxcmds.c | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 0521b58..4c2e616 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -2023,7 +2023,7 @@ __glXDisp_Render(__GLXclientState * cl, GLbyte * pc)
left = (req->length << 2) - sz_xGLXRenderReq;
while (left > 0) {
__GLXrenderSizeData entry;
- int extra;
+ int extra = 0;
__GLXdispatchRenderProcPtr proc;
int err;
@@ -2042,6 +2042,9 @@ __glXDisp_Render(__GLXclientState * cl, GLbyte * pc)
cmdlen = hdr->length;
opcode = hdr->opcode;
+ if (left < cmdlen)
+ return BadLength;
+
/*
** Check for core opcodes and grab entry data.
*/
@@ -2055,6 +2058,10 @@ __glXDisp_Render(__GLXclientState * cl, GLbyte * pc)
return __glXError(GLXBadRenderRequest);
}
+ if (cmdlen < entry.bytes) {
+ return BadLength;
+ }
+
if (entry.varsize) {
/* variable size command */
extra = (*entry.varsize) (pc + __GLX_RENDER_HDR_SIZE,
@@ -2062,17 +2069,9 @@ __glXDisp_Render(__GLXclientState * cl, GLbyte * pc)
if (extra < 0) {
return BadLength;
}
- if (cmdlen != __GLX_PAD(entry.bytes + extra)) {
- return BadLength;
- }
}
- else {
- /* constant size command */
- if (cmdlen != __GLX_PAD(entry.bytes)) {
- return BadLength;
- }
- }
- if (left < cmdlen) {
+
+ if (cmdlen != safe_pad(safe_add(entry.bytes, extra))) {
return BadLength;
}
--
1.7.9.2
++++++ U_glx_Length_checking_for_RenderLarge_requests.patch ++++++
Subject: glx: Length checking for RenderLarge requests (v2)
References: bnc#907268, CVE-2014-8098
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
This is a half-measure until we start passing request length into the
varsize function, but it's better than the nothing we had before.
v2: Verify that there's at least a large render header's worth of
dataBytes (Julien Cristau)
Reviewed-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Andy Ritger <aritger(a)nvidia.com>
Signed-off-by: Adam Jackson <ajax(a)redhat.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
glx/glxcmds.c | 57 ++++++++++++++++++++++++++++++++++-----------------------
1 file changed, 34 insertions(+), 23 deletions(-)
diff --git a/glx/glxcmds.c b/glx/glxcmds.c
index 4c2e616..0e7efcc 100644
--- a/glx/glxcmds.c
+++ b/glx/glxcmds.c
@@ -2107,6 +2107,8 @@ __glXDisp_RenderLarge(__GLXclientState * cl, GLbyte * pc)
__GLX_DECLARE_SWAP_VARIABLES;
+ REQUEST_AT_LEAST_SIZE(xGLXRenderLargeReq);
+
req = (xGLXRenderLargeReq *) pc;
if (client->swapped) {
__GLX_SWAP_SHORT(&req->length);
@@ -2122,12 +2124,14 @@ __glXDisp_RenderLarge(__GLXclientState * cl, GLbyte * pc)
__glXResetLargeCommandStatus(cl);
return error;
}
+ if (safe_pad(req->dataBytes) < 0)
+ return BadLength;
dataBytes = req->dataBytes;
/*
** Check the request length.
*/
- if ((req->length << 2) != __GLX_PAD(dataBytes) + sz_xGLXRenderLargeReq) {
+ if ((req->length << 2) != safe_pad(dataBytes) + sz_xGLXRenderLargeReq) {
client->errorValue = req->length;
/* Reset in case this isn't 1st request. */
__glXResetLargeCommandStatus(cl);
@@ -2137,7 +2141,7 @@ __glXDisp_RenderLarge(__GLXclientState * cl, GLbyte * pc)
if (cl->largeCmdRequestsSoFar == 0) {
__GLXrenderSizeData entry;
- int extra;
+ int extra = 0;
size_t cmdlen;
int err;
@@ -2150,13 +2154,17 @@ __glXDisp_RenderLarge(__GLXclientState * cl, GLbyte * pc)
return __glXError(GLXBadLargeRequest);
}
+ if (dataBytes < __GLX_RENDER_LARGE_HDR_SIZE)
+ return BadLength;
+
hdr = (__GLXrenderLargeHeader *) pc;
if (client->swapped) {
__GLX_SWAP_INT(&hdr->length);
__GLX_SWAP_INT(&hdr->opcode);
}
- cmdlen = hdr->length;
opcode = hdr->opcode;
+ if ((cmdlen = safe_pad(hdr->length)) < 0)
+ return BadLength;
/*
** Check for core opcodes and grab entry data.
@@ -2178,17 +2186,13 @@ __glXDisp_RenderLarge(__GLXclientState * cl, GLbyte * pc)
if (extra < 0) {
return BadLength;
}
- /* large command's header is 4 bytes longer, so add 4 */
- if (cmdlen != __GLX_PAD(entry.bytes + 4 + extra)) {
- return BadLength;
- }
}
- else {
- /* constant size command */
- if (cmdlen != __GLX_PAD(entry.bytes + 4)) {
- return BadLength;
- }
+
+ /* the +4 is safe because we know entry.bytes is small */
+ if (cmdlen != safe_pad(safe_add(entry.bytes + 4, extra))) {
+ return BadLength;
}
+
/*
** Make enough space in the buffer, then copy the entire request.
*/
@@ -2215,6 +2219,7 @@ __glXDisp_RenderLarge(__GLXclientState * cl, GLbyte * pc)
** We are receiving subsequent (i.e. not the first) requests of a
** multi request command.
*/
+ int bytesSoFar; /* including this packet */
/*
** Check the request number and the total request count.
@@ -2233,11 +2238,18 @@ __glXDisp_RenderLarge(__GLXclientState * cl, GLbyte * pc)
/*
** Check that we didn't get too much data.
*/
- if ((cl->largeCmdBytesSoFar + dataBytes) > cl->largeCmdBytesTotal) {
+ if ((bytesSoFar = safe_add(cl->largeCmdBytesSoFar, dataBytes)) < 0) {
+ client->errorValue = dataBytes;
+ __glXResetLargeCommandStatus(cl);
+ return __glXError(GLXBadLargeRequest);
+ }
+
+ if (bytesSoFar > cl->largeCmdBytesTotal) {
client->errorValue = dataBytes;
__glXResetLargeCommandStatus(cl);
return __glXError(GLXBadLargeRequest);
}
+
memcpy(cl->largeCmdBuf + cl->largeCmdBytesSoFar, pc, dataBytes);
cl->largeCmdBytesSoFar += dataBytes;
cl->largeCmdRequestsSoFar++;
@@ -2241,17 +2253,16 @@ __glXDisp_RenderLarge(__GLXclientState *
** This is the last request; it must have enough bytes to complete
** the command.
*/
- /* NOTE: the two pad macros have been added below; they are needed
- ** because the client library pads the total byte count, but not
- ** the per-request byte counts. The Protocol Encoding says the
- ** total byte count should not be padded, so a proposal will be
- ** made to the ARB to relax the padding constraint on the total
- ** byte count, thus preserving backward compatibility. Meanwhile,
- ** the padding done below fixes a bug that did not allow
- ** large commands of odd sizes to be accepted by the server.
+ /* NOTE: the pad macro below is needed because the client library
+ ** pads the total byte count, but not the per-request byte counts.
+ ** The Protocol Encoding says the total byte count should not be
+ ** padded, so a proposal will be made to the ARB to relax the
+ ** padding constraint on the total byte count, thus preserving
+ ** backward compatibility. Meanwhile, the padding done below
+ ** fixes a bug that did not allow large commands of odd sizes to
+ ** be accepted by the server.
*/
- if (__GLX_PAD(cl->largeCmdBytesSoFar) !=
- __GLX_PAD(cl->largeCmdBytesTotal)) {
+ if (safe_pad(cl->largeCmdBytesSoFar) != cl->largeCmdBytesTotal) {
client->errorValue = dataBytes;
__glXResetLargeCommandStatus(cl);
return __glXError(GLXBadLargeRequest);
++++++ U_glx_Length_checking_for_non_generated_single_request.patch ++++++
Subject: glx: Length checking for non-generated single requests (v2)
References: bnc#907268, CVE-2014-8098
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
v2:
Fix single versus vendor-private length checking for ARB_imaging subset
extensions. (Julien Cristau)
v3:
Fix single versus vendor-private length checking for ARB_imaging subset
extensions. (Julien Cristau)
Reviewed-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Andy Ritger <aritger(a)nvidia.com>
Signed-off-by: Adam Jackson <ajax(a)redhat.com>
Signed-off-by: Julien Cristau <jcristau(a)debian.org>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
glx/indirect_texture_compression.c | 4 ++++
glx/single2.c | 23 +++++++++++++++----
glx/single2swap.c | 19 ++++++++++++----
glx/singlepix.c | 44 ++++++++++++++++++++++++------------
glx/singlepixswap.c | 34 ++++++++++++++++++++++++----
5 files changed, 95 insertions(+), 29 deletions(-)
Index: xorg-server-1.14.3.901/glx/indirect_texture_compression.c
===================================================================
--- xorg-server-1.14.3.901.orig/glx/indirect_texture_compression.c
+++ xorg-server-1.14.3.901/glx/indirect_texture_compression.c
@@ -47,6 +47,8 @@ __glXDisp_GetCompressedTexImageARB(struc
__GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 8);
+
pc += __GLX_SINGLE_HDR_SIZE;
if (cx != NULL) {
const GLenum target = *(GLenum *) (pc + 0);
@@ -93,6 +95,8 @@ __glXDispSwap_GetCompressedTexImageARB(s
__glXForceCurrent(cl, bswap_32(req->contextTag), &error);
ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 8);
+
pc += __GLX_SINGLE_HDR_SIZE;
if (cx != NULL) {
const GLenum target = (GLenum) bswap_32(*(int *) (pc + 0));
Index: xorg-server-1.14.3.901/glx/single2.c
===================================================================
--- xorg-server-1.14.3.901.orig/glx/single2.c
+++ xorg-server-1.14.3.901/glx/single2.c
@@ -49,11 +49,14 @@
int
__glXDisp_FeedbackBuffer(__GLXclientState * cl, GLbyte * pc)
{
+ ClientPtr client = cl->client;
GLsizei size;
GLenum type;
__GLXcontext *cx;
int error;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 8);
+
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
return error;
@@ -80,10 +83,13 @@ __glXDisp_FeedbackBuffer(__GLXclientStat
int
__glXDisp_SelectBuffer(__GLXclientState * cl, GLbyte * pc)
{
+ ClientPtr client = cl->client;
__GLXcontext *cx;
GLsizei size;
int error;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
+
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
return error;
@@ -108,7 +114,7 @@ __glXDisp_SelectBuffer(__GLXclientState
int
__glXDisp_RenderMode(__GLXclientState * cl, GLbyte * pc)
{
- ClientPtr client;
+ ClientPtr client = cl->client;
xGLXRenderModeReply reply;
__GLXcontext *cx;
GLint nitems = 0, retBytes = 0, retval, newModeCheck;
@@ -116,6 +122,8 @@ __glXDisp_RenderMode(__GLXclientState *
GLenum newMode;
int error;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
+
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
return error;
@@ -192,7 +200,6 @@ __glXDisp_RenderMode(__GLXclientState *
** selection array, as per the API for glRenderMode itself.
*/
noChangeAllowed:;
- client = cl->client;
reply = (xGLXRenderModeReply) {
.type = X_Reply,
.sequenceNumber = client->sequence,
@@ -211,9 +218,12 @@ __glXDisp_RenderMode(__GLXclientState *
int
__glXDisp_Flush(__GLXclientState * cl, GLbyte * pc)
{
+ ClientPtr client = cl->client;
__GLXcontext *cx;
int error;
+ REQUEST_SIZE_MATCH(xGLXSingleReq);
+
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
return error;
@@ -227,10 +237,12 @@ __glXDisp_Flush(__GLXclientState * cl, G
int
__glXDisp_Finish(__GLXclientState * cl, GLbyte * pc)
{
+ ClientPtr client = cl->client;
__GLXcontext *cx;
- ClientPtr client;
int error;
+ REQUEST_SIZE_MATCH(xGLXSingleReq);
+
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
return error;
@@ -321,7 +333,7 @@ __glXcombine_strings(const char *cext_st
int
DoGetString(__GLXclientState * cl, GLbyte * pc, GLboolean need_swap)
{
- ClientPtr client;
+ ClientPtr client = cl->client;
__GLXcontext *cx;
GLenum name;
const char *string;
@@ -331,6 +343,8 @@ DoGetString(__GLXclientState * cl, GLbyt
char *buf = NULL, *buf1 = NULL;
GLint length = 0;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
+
/* If the client has the opposite byte order, swap the contextTag and
* the name.
*/
@@ -347,7 +361,6 @@ DoGetString(__GLXclientState * cl, GLbyt
pc += __GLX_SINGLE_HDR_SIZE;
name = *(GLenum *) (pc + 0);
string = (const char *) CALL_GetString(GET_DISPATCH(), (name));
- client = cl->client;
if (string == NULL)
string = "";
Index: xorg-server-1.14.3.901/glx/single2swap.c
===================================================================
--- xorg-server-1.14.3.901.orig/glx/single2swap.c
+++ xorg-server-1.14.3.901/glx/single2swap.c
@@ -45,6 +45,7 @@
int
__glXDispSwap_FeedbackBuffer(__GLXclientState * cl, GLbyte * pc)
{
+ ClientPtr client = cl->client;
GLsizei size;
GLenum type;
@@ -52,6 +53,8 @@ __glXDispSwap_FeedbackBuffer(__GLXclient
__GLXcontext *cx;
int error;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 8);
+
__GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
@@ -81,12 +84,15 @@ __glXDispSwap_FeedbackBuffer(__GLXclient
int
__glXDispSwap_SelectBuffer(__GLXclientState * cl, GLbyte * pc)
{
+ ClientPtr client = cl->client;
__GLXcontext *cx;
GLsizei size;
__GLX_DECLARE_SWAP_VARIABLES;
int error;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
+
__GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
@@ -113,7 +119,7 @@ __glXDispSwap_SelectBuffer(__GLXclientSt
int
__glXDispSwap_RenderMode(__GLXclientState * cl, GLbyte * pc)
{
- ClientPtr client;
+ ClientPtr client = cl->client;
__GLXcontext *cx;
xGLXRenderModeReply reply;
GLint nitems = 0, retBytes = 0, retval, newModeCheck;
@@ -124,6 +130,8 @@ __glXDispSwap_RenderMode(__GLXclientStat
__GLX_DECLARE_SWAP_ARRAY_VARIABLES;
int error;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
+
__GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
@@ -204,7 +212,6 @@ __glXDispSwap_RenderMode(__GLXclientStat
** selection array, as per the API for glRenderMode itself.
*/
noChangeAllowed:;
- client = cl->client;
reply = (xGLXRenderModeReply) {
.type = X_Reply,
.sequenceNumber = client->sequence,
@@ -228,11 +235,14 @@ __glXDispSwap_RenderMode(__GLXclientStat
int
__glXDispSwap_Flush(__GLXclientState * cl, GLbyte * pc)
{
+ ClientPtr client = cl->client;
__GLXcontext *cx;
int error;
__GLX_DECLARE_SWAP_VARIABLES;
+ REQUEST_SIZE_MATCH(xGLXSingleReq);
+
__GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
@@ -247,12 +257,14 @@ __glXDispSwap_Flush(__GLXclientState * c
int
__glXDispSwap_Finish(__GLXclientState * cl, GLbyte * pc)
{
+ ClientPtr client = cl->client;
__GLXcontext *cx;
- ClientPtr client;
int error;
__GLX_DECLARE_SWAP_VARIABLES;
+ REQUEST_SIZE_MATCH(xGLXSingleReq);
+
__GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
@@ -264,7 +276,6 @@ __glXDispSwap_Finish(__GLXclientState *
cx->hasUnflushedCommands = GL_FALSE;
/* Send empty reply packet to indicate finish is finished */
- client = cl->client;
__GLX_BEGIN_REPLY(0);
__GLX_PUT_RETVAL(0);
__GLX_SWAP_REPLY_HEADER();
Index: xorg-server-1.14.3.901/glx/singlepix.c
===================================================================
--- xorg-server-1.14.3.901.orig/glx/singlepix.c
+++ xorg-server-1.14.3.901/glx/singlepix.c
@@ -55,6 +55,8 @@ __glXDisp_ReadPixels(__GLXclientState *
int error;
char *answer, answerBuffer[200];
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 28);
+
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
return error;
@@ -107,6 +109,8 @@ __glXDisp_GetTexImage(__GLXclientState *
char *answer, answerBuffer[200];
GLint width = 0, height = 0, depth = 1;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 20);
+
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
return error;
@@ -169,6 +173,8 @@ __glXDisp_GetPolygonStipple(__GLXclientS
GLubyte answerBuffer[200];
char *answer;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
+
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
return error;
@@ -231,15 +237,13 @@ GetSeparableFilter(__GLXclientState * cl
compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1);
compsize2 = __glGetTexImage_size(target, 1, format, type, height, 1, 1);
- if (compsize < 0)
+ if ((compsize = safe_pad(compsize)) < 0)
return BadLength;
- if (compsize2 < 0)
+ if ((compsize2 = safe_pad(compsize2)) < 0)
return BadLength;
- compsize = __GLX_PAD(compsize);
- compsize2 = __GLX_PAD(compsize2);
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, swapBytes));
- __GLX_GET_ANSWER_BUFFER(answer, cl, compsize + compsize2, 1);
+ __GLX_GET_ANSWER_BUFFER(answer, cl, safe_add(compsize, compsize2), 1);
__glXClearErrorOccured();
CALL_GetSeparableFilter(GET_DISPATCH(), (*(GLenum *) (pc + 0),
*(GLenum *) (pc + 4),
@@ -265,7 +269,8 @@ int
__glXDisp_GetSeparableFilter(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
-
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
return GetSeparableFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
}
@@ -273,7 +278,8 @@ int
__glXDisp_GetSeparableFilterEXT(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
-
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
return GetSeparableFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
}
@@ -343,7 +349,8 @@ int
__glXDisp_GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
-
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
return GetConvolutionFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
}
@@ -351,7 +358,8 @@ int
__glXDisp_GetConvolutionFilterEXT(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
-
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
return GetConvolutionFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
}
@@ -411,7 +419,8 @@ int
__glXDisp_GetHistogram(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
-
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
return GetHistogram(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
}
@@ -419,7 +428,8 @@ int
__glXDisp_GetHistogramEXT(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
-
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
return GetHistogram(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
}
@@ -471,7 +481,8 @@ int
__glXDisp_GetMinmax(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
-
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
return GetMinmax(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
}
@@ -479,7 +490,8 @@ int
__glXDisp_GetMinmaxEXT(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
-
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
return GetMinmax(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
}
@@ -540,7 +552,8 @@ int
__glXDisp_GetColorTable(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
-
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
return GetColorTable(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
}
@@ -548,6 +561,7 @@ int
__glXDisp_GetColorTableSGI(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
-
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
return GetColorTable(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
}
Index: xorg-server-1.14.3.901/glx/singlepixswap.c
===================================================================
--- xorg-server-1.14.3.901.orig/glx/singlepixswap.c
+++ xorg-server-1.14.3.901/glx/singlepixswap.c
@@ -57,6 +57,8 @@ __glXDispSwap_ReadPixels(__GLXclientStat
int error;
char *answer, answerBuffer[200];
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 28);
+
__GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
@@ -122,6 +124,8 @@ __glXDispSwap_GetTexImage(__GLXclientSta
char *answer, answerBuffer[200];
GLint width = 0, height = 0, depth = 1;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 20);
+
__GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
@@ -197,6 +201,8 @@ __glXDispSwap_GetPolygonStipple(__GLXcli
__GLX_DECLARE_SWAP_VARIABLES;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 4);
+
__GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag);
cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error);
if (!cx) {
@@ -266,15 +272,13 @@ GetSeparableFilter(__GLXclientState * cl
compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1);
compsize2 = __glGetTexImage_size(target, 1, format, type, height, 1, 1);
- if (compsize < 0)
+ if ((compsize = safe_pad(compsize)) < 0)
return BadLength;
- if (compsize2 < 0)
+ if ((compsize2 = safe_pad(compsize2)) < 0)
return BadLength;
- compsize = __GLX_PAD(compsize);
- compsize2 = __GLX_PAD(compsize2);
CALL_PixelStorei(GET_DISPATCH(), (GL_PACK_SWAP_BYTES, !swapBytes));
- __GLX_GET_ANSWER_BUFFER(answer, cl, compsize + compsize2, 1);
+ __GLX_GET_ANSWER_BUFFER(answer, cl, safe_add(compsize, compsize2), 1);
__glXClearErrorOccured();
CALL_GetSeparableFilter(GET_DISPATCH(), (*(GLenum *) (pc + 0),
*(GLenum *) (pc + 4),
@@ -302,7 +306,9 @@ int
__glXDispSwap_GetSeparableFilter(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
return GetSeparableFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
}
@@ -310,7 +316,9 @@ int
__glXDispSwap_GetSeparableFilterEXT(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
return GetSeparableFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
}
@@ -388,7 +396,9 @@ int
__glXDispSwap_GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
return GetConvolutionFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
}
@@ -396,7 +406,9 @@ int
__glXDispSwap_GetConvolutionFilterEXT(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
return GetConvolutionFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
}
@@ -463,7 +475,9 @@ int
__glXDispSwap_GetHistogram(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
return GetHistogram(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
}
@@ -471,7 +485,9 @@ int
__glXDispSwap_GetHistogramEXT(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
return GetHistogram(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
}
@@ -529,7 +545,9 @@ int
__glXDispSwap_GetMinmax(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
return GetMinmax(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
}
@@ -537,7 +555,9 @@ int
__glXDispSwap_GetMinmaxEXT(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
return GetMinmax(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
}
@@ -605,7 +625,9 @@ int
__glXDispSwap_GetColorTable(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc);
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXSingleReq, 16);
return GetColorTable(cl, pc + __GLX_SINGLE_HDR_SIZE, tag);
}
@@ -613,6 +635,8 @@ int
__glXDispSwap_GetColorTableSGI(__GLXclientState * cl, GLbyte * pc)
{
const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc);
+ ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16);
return GetColorTable(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag);
}
++++++ U_glx_Length_checking_for_non_generated_vendor_private_requests.patch ++++++
Subject: glx: Length-checking for non-generated vendor private requests
References: bnc#907268, CVE-2014-8098
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Keith Packard <keithp(a)keithp.com>
Reviewed-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Andy Ritger <aritger(a)nvidia.com>
Signed-off-by: Adam Jackson <ajax(a)redhat.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
glx/indirect_program.c | 2 ++
glx/swap_interval.c | 2 ++
2 files changed, 4 insertions(+)
diff --git a/glx/indirect_program.c b/glx/indirect_program.c
index cda139e..5caee7b 100644
--- a/glx/indirect_program.c
+++ b/glx/indirect_program.c
@@ -56,6 +56,8 @@ DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte * pc,
__GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error);
ClientPtr client = cl->client;
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateWithReplyReq, 8);
+
pc += __GLX_VENDPRIV_HDR_SIZE;
if (cx != NULL) {
GLenum target;
diff --git a/glx/swap_interval.c b/glx/swap_interval.c
index 17bc992..2320550 100644
--- a/glx/swap_interval.c
+++ b/glx/swap_interval.c
@@ -46,6 +46,8 @@ DoSwapInterval(__GLXclientState * cl, GLbyte * pc, int do_swap)
__GLXcontext *cx;
GLint interval;
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 4);
+
cx = __glXLookupContextByTag(cl, tag);
if ((cx == NULL) || (cx->pGlxScreen == NULL)) {
--
1.7.9.2
++++++ U_glx_Pass_remaining_request_length_into_varsize.patch ++++++
++++ 930 lines (skipped)
++++++ U_glx_Request_length_checks_for_SetClientInfoARB.patch ++++++
Subject: glx: Request length checks for SetClientInfoARB
References: bnc#907268, CVE-2014-8098
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Keith Packard <keithp(a)keithp.com>
Reviewed-by: Julien Cristau <jcristau(a)debian.org>
Reviewed-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Andy Ritger <aritger(a)nvidia.com>
Signed-off-by: Adam Jackson <ajax(a)redhat.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
glx/clientinfo.c | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/glx/clientinfo.c b/glx/clientinfo.c
index 4aaa4c9..c5fef30 100644
--- a/glx/clientinfo.c
+++ b/glx/clientinfo.c
@@ -33,18 +33,21 @@ static int
set_client_info(__GLXclientState * cl, xGLXSetClientInfoARBReq * req,
unsigned bytes_per_version)
{
+ ClientPtr client = cl->client;
char *gl_extensions;
char *glx_extensions;
+ REQUEST_AT_LEAST_SIZE(xGLXSetClientInfoARBReq);
+
/* Verify that the size of the packet matches the size inferred from the
* sizes specified for the various fields.
*/
- const unsigned expected_size = sz_xGLXSetClientInfoARBReq
- + (req->numVersions * bytes_per_version)
- + __GLX_PAD(req->numGLExtensionBytes)
- + __GLX_PAD(req->numGLXExtensionBytes);
+ int size = sz_xGLXSetClientInfoARBReq;
+ size = safe_add(size, safe_mul(req->numVersions, bytes_per_version));
+ size = safe_add(size, safe_pad(req->numGLExtensionBytes));
+ size = safe_add(size, safe_pad(req->numGLXExtensionBytes));
- if (req->length != (expected_size / 4))
+ if (size < 0 || req->length != (size / 4))
return BadLength;
/* Verify that the actual length of the GL extension string matches what's
@@ -80,8 +83,11 @@ __glXDisp_SetClientInfoARB(__GLXclientState * cl, GLbyte * pc)
int
__glXDispSwap_SetClientInfoARB(__GLXclientState * cl, GLbyte * pc)
{
+ ClientPtr client = cl->client;
xGLXSetClientInfoARBReq *req = (xGLXSetClientInfoARBReq *) pc;
+ REQUEST_AT_LEAST_SIZE(xGLXSetClientInfoARBReq);
+
req->length = bswap_16(req->length);
req->numVersions = bswap_32(req->numVersions);
req->numGLExtensionBytes = bswap_32(req->numGLExtensionBytes);
@@ -99,8 +105,11 @@ __glXDisp_SetClientInfo2ARB(__GLXclientState * cl, GLbyte * pc)
int
__glXDispSwap_SetClientInfo2ARB(__GLXclientState * cl, GLbyte * pc)
{
+ ClientPtr client = cl->client;
xGLXSetClientInfoARBReq *req = (xGLXSetClientInfoARBReq *) pc;
+ REQUEST_AT_LEAST_SIZE(xGLXSetClientInfoARBReq);
+
req->length = bswap_16(req->length);
req->numVersions = bswap_32(req->numVersions);
req->numGLExtensionBytes = bswap_32(req->numGLExtensionBytes);
--
1.7.9.2
++++++ U_glx_Top_level_length_checking_for_swapped_VendorPrivate_requests.patch ++++++
Subject: glx: Top-level length checking for swapped VendorPrivate requests
References: bnc#907268, CVE-2014-8098
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Keith Packard <keithp(a)keithp.com>
Reviewed-by: Julien Cristau <jcristau(a)debian.org>
Reviewed-by: Michal Srb <msrb(a)suse.com>
Reviewed-by: Andy Ritger <aritger(a)nvidia.com>
Signed-off-by: Adam Jackson <ajax(a)redhat.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
glx/glxcmdsswap.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/glx/glxcmdsswap.c b/glx/glxcmdsswap.c
index 5d179f3..9ec1222 100644
--- a/glx/glxcmdsswap.c
+++ b/glx/glxcmdsswap.c
@@ -958,11 +958,13 @@ __glXDispSwap_RenderLarge(__GLXclientState * cl, GLbyte * pc)
int
__glXDispSwap_VendorPrivate(__GLXclientState * cl, GLbyte * pc)
{
+ ClientPtr client = cl->client;
xGLXVendorPrivateReq *req;
GLint vendorcode;
__GLXdispatchVendorPrivProcPtr proc;
__GLX_DECLARE_SWAP_VARIABLES;
+ REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateReq);
req = (xGLXVendorPrivateReq *) pc;
__GLX_SWAP_SHORT(&req->length);
@@ -985,11 +987,13 @@ __glXDispSwap_VendorPrivate(__GLXclientState * cl, GLbyte * pc)
int
__glXDispSwap_VendorPrivateWithReply(__GLXclientState * cl, GLbyte * pc)
{
+ ClientPtr client = cl->client;
xGLXVendorPrivateWithReplyReq *req;
GLint vendorcode;
__GLXdispatchVendorPrivProcPtr proc;
__GLX_DECLARE_SWAP_VARIABLES;
+ REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateWithReplyReq);
req = (xGLXVendorPrivateWithReplyReq *) pc;
__GLX_SWAP_SHORT(&req->length);
--
1.7.9.2
++++++ U_kdrive_extend_screen_option_syntax.patch ++++++
>From 376f4de8ae927748417046390c24afbda24b0583 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?=
<laerciosousa(a)sme-mogidascruzes.sp.gov.br>
Date: Mon, 18 Aug 2014 08:45:41 -0300
Subject: kdrive: add support to +X+Y syntax in -screen option parsing
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This patch enhances current -screen option parsing for kdrive-based
applications. It can parse strings like
<WIDTH>x<HEIGHT>+<XOFFSET>+<YOFFSET>, storing X and Y offsets
in KdScreenInfo instances.
For negative values, this patch supports +-X+-Y (not -X-Y) syntax.
It will allow e.g. proper Xephyr window placement for multiseat
purposes.
Signed-off-by: Laércio de Sousa <laerciosousa(a)sme-mogidascruzes.sp.gov.br>
Reviewed-by: Keith Packard <keithp(a)keithp.com>
Signed-off-by: Keith Packard <keithp(a)keithp.com>
diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c
index b5b91c0..5dbff3f 100644
--- a/hw/kdrive/src/kdrive.c
+++ b/hw/kdrive/src/kdrive.c
@@ -300,6 +300,8 @@ KdParseScreen(KdScreenInfo * screen, const char *arg)
screen->softCursor = kdSoftCursor;
screen->origin = kdOrigin;
screen->randr = RR_Rotate_0;
+ screen->x = 0;
+ screen->y = 0;
screen->width = 0;
screen->height = 0;
screen->width_mm = 0;
@@ -313,7 +315,7 @@ KdParseScreen(KdScreenInfo * screen, const char *arg)
return;
for (i = 0; i < 2; i++) {
- arg = KdParseFindNext(arg, "x/@XY", save, &delim);
+ arg = KdParseFindNext(arg, "x/+@XY", save, &delim);
if (!save[0])
return;
@@ -321,7 +323,7 @@ KdParseScreen(KdScreenInfo * screen, const char *arg)
mm = 0;
if (delim == '/') {
- arg = KdParseFindNext(arg, "x@XY", save, &delim);
+ arg = KdParseFindNext(arg, "x+@XY", save, &delim);
if (!save[0])
return;
mm = atoi(save);
@@ -335,7 +337,8 @@ KdParseScreen(KdScreenInfo * screen, const char *arg)
screen->height = pixels;
screen->height_mm = mm;
}
- if (delim != 'x' && delim != '@' && delim != 'X' && delim != 'Y' &&
+ if (delim != 'x' && delim != '+' && delim != '@' &&
+ delim != 'X' && delim != 'Y' &&
(delim != '\0' || i == 0))
return;
}
@@ -346,6 +349,18 @@ KdParseScreen(KdScreenInfo * screen, const char *arg)
kdSoftCursor = FALSE;
kdSubpixelOrder = SubPixelUnknown;
+ if (delim == '+') {
+ arg = KdParseFindNext(arg, "+@xXY", save, &delim);
+ if (save[0])
+ screen->x = atoi(save);
+ }
+
+ if (delim == '+') {
+ arg = KdParseFindNext(arg, "@xXY", save, &delim);
+ if (save[0])
+ screen->y = atoi(save);
+ }
+
if (delim == '@') {
arg = KdParseFindNext(arg, "xXY", save, &delim);
if (save[0]) {
@@ -425,7 +440,7 @@ KdUseMsg(void)
{
ErrorF("\nTinyX Device Dependent Usage:\n");
ErrorF
- ("-screen WIDTH[/WIDTHMM]xHEIGHT[/HEIGHTMM][@ROTATION][X][Y][xDEPTH/BPP[xFREQ]] Specify screen characteristics\n");
+ ("-screen WIDTH[/WIDTHMM]xHEIGHT[/HEIGHTMM][+[-]XOFFSET][+[-]YOFFSET][@ROTATION][X][Y][xDEPTH/BPP[xFREQ]] Specify screen characteristics\n");
ErrorF
("-rgba rgb/bgr/vrgb/vbgr/none Specify subpixel ordering for LCD panels\n");
ErrorF
diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h
index 08b1681..066a134 100644
--- a/hw/kdrive/src/kdrive.h
+++ b/hw/kdrive/src/kdrive.h
@@ -89,6 +89,8 @@ typedef struct _KdScreenInfo {
ScreenPtr pScreen;
void *driver;
Rotation randr; /* rotation and reflection */
+ int x;
+ int y;
int width;
int height;
int rate;
--
cgit v0.10.2
++++++ U_os-Teach-vpnprintf-how-to-handle-.-s.patch ++++++
From: Jon TURNEY <jon.turney(a)dronecode.org.uk>
Date: Thu Feb 5 20:29:48 2015 +0000
Subject: [PATCH]os: Teach vpnprintf() how to handle "%*.*s"
Patch-mainline: xorg-server-1.17.99.901
Git-commit: d3080d421bf0d91daea2e39bfc391c43d7fdad75
Git-repo: git://anongit.freedesktop.org/git/xorg/xserver
References: bsc#954321
Signed-off-by: Egbert Eich <eich(a)suse.com>
XdmcpFatal uses the format specifier %*.*s, which vpnprintf() doesn't
understand, which causes a backtrace and prevents the reason for the XDMCP
failure being logged.
See also:
https://bugs.freedesktop.org/show_bug.cgi?id=66862
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=758574
"%*.*s" is also currently used in a few other places, so teach vpnprintf() how
to handle it
$ fgrep -r "%*.*s" *
hw/dmx/config/scanner.l: fprintf(stderr, "parse error on line %d at token \"%*.*s\"\n",
hw/dmx/dmxlog.c: ErrorF("(%s) dmx[i%d/%*.*s]: ", type,
hw/dmx/input/dmxinputinit.c: dmxLogCont(dmxInfo, "\t[i%d/%*.*s",
os/access.c: ErrorF("Xserver: siAddrMatch(): type = %s, value = %*.*s -- %s\n",
os/access.c: ("Xserver: siCheckAddr(): type = %s, value = %*.*s, len = %d -- %s\n",
os/xdmcp.c: FatalError("XDMCP fatal error: %s %*.*s\n", type,
Signed-off-by: Jon TURNEY <jon.turney(a)dronecode.org.uk>
Reviewed-by: Colin Harrison <colin.harrison(a)virgin.net>
---
os/log.c | 28 ++++++++++++++++++++++++----
1 file changed, 24 insertions(+), 4 deletions(-)
diff --git a/os/log.c b/os/log.c
index 53b3586..6775180 100644
--- a/os/log.c
+++ b/os/log.c
@@ -347,6 +347,7 @@ pnprintf(char *string, size_t size, const char *f, va_list args)
int i;
uint64_t ui;
int64_t si;
+ int precision;
for (; f_idx < f_len && s_idx < size - 1; f_idx++) {
int length_modifier = 0;
@@ -357,9 +358,29 @@ pnprintf(char *string, size_t size, const char *f, va_list args)
f_idx++;
- /* silently swallow digit length modifiers */
- while (f_idx < f_len && ((f[f_idx] >= '0' && f[f_idx] <= '9') || f[f_idx] == '.'))
+ /* silently swallow minimum field width */
+ if (f[f_idx] == '*') {
f_idx++;
+ va_arg(args, int);
+ } else {
+ while (f_idx < f_len && ((f[f_idx] >= '0' && f[f_idx] <= '9')))
+ f_idx++;
+ }
+
+ /* is there a precision? */
+ precision = size;
+ if (f[f_idx] == '.') {
+ f_idx++;
+ if (f[f_idx] == '*') {
+ f_idx++;
+ /* precision is supplied in an int argument */
+ precision = va_arg(args, int);
+ } else {
+ /* silently swallow precision digits */
+ while (f_idx < f_len && ((f[f_idx] >= '0' && f[f_idx] <= '9')))
+ f_idx++;
+ }
+ }
/* non-digit length modifiers */
if (f_idx < f_len) {
@@ -375,9 +396,8 @@ pnprintf(char *string, size_t size, const char *f, va_list args)
switch (f[f_idx]) {
case 's':
string_arg = va_arg(args, char*);
- p_len = strlen_sigsafe(string_arg);
- for (i = 0; i < p_len && s_idx < size - 1; i++)
+ for (i = 0; string_arg[i] != 0 && s_idx < size - 1 && s_idx < precision; i++)
string[s_idx++] = string_arg[i];
break;
++++++ U_randr_dont_directly_set_changed_bits_in_randr_screen.patch ++++++
>From f9c8248b8326ad01f33f31531c6b2479baf80f02 Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied(a)redhat.com>
Date: Wed, 9 Jan 2013 14:23:57 +1000
Subject: [PATCH] randr: don't directly set changed bits in randr screen
Introduce a wrapper interface so we can fix things up for multi-gpu
situations later.
This just introduces the API for now.
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
Signed-off-by: Dave Airlie <airlied(a)redhat.com>
diff --git a/randr/randr.c b/randr/randr.c
index f0decfc..11f88b2 100644
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -464,6 +464,14 @@ TellChanged(WindowPtr pWin, pointer value)
return WT_WALKCHILDREN;
}
+void
+RRSetChanged(ScreenPtr pScreen)
+{
+ rrScrPriv(pScreen);
+
+ pScrPriv->changed = TRUE;
+}
+
/*
* Something changed; send events and adjust pointer position
*/
diff --git a/randr/randrstr.h b/randr/randrstr.h
index 2517479..2babfed 100644
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -486,6 +486,10 @@ extern _X_EXPORT void
RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen);
/* randr.c */
+/* set a screen change on the primary screen */
+extern _X_EXPORT void
+RRSetChanged(ScreenPtr pScreen);
+
/*
* Send all pending events
*/
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
index 721b05a..2f76b62 100644
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
@@ -39,7 +39,7 @@ RRCrtcChanged(RRCrtcPtr crtc, Bool layoutChanged)
if (pScreen) {
rrScrPriv(pScreen);
- pScrPriv->changed = TRUE;
+ RRSetChanged(pScreen);
/*
* Send ConfigureNotify on any layout change
*/
diff --git a/randr/rrinfo.c b/randr/rrinfo.c
index 1408d6f..fc57bd4 100644
--- a/randr/rrinfo.c
+++ b/randr/rrinfo.c
@@ -225,7 +225,7 @@ RRScreenSetSizeRange(ScreenPtr pScreen,
pScrPriv->minHeight = minHeight;
pScrPriv->maxWidth = maxWidth;
pScrPriv->maxHeight = maxHeight;
- pScrPriv->changed = TRUE;
+ RRSetChanged(pScreen);
pScrPriv->configChanged = TRUE;
}
diff --git a/randr/rroutput.c b/randr/rroutput.c
index 88781ba..922d61f 100644
--- a/randr/rroutput.c
+++ b/randr/rroutput.c
@@ -36,7 +36,7 @@ RROutputChanged(RROutputPtr output, Bool configChanged)
output->changed = TRUE;
if (pScreen) {
rrScrPriv(pScreen);
- pScrPriv->changed = TRUE;
+ RRSetChanged(pScreen);
if (configChanged)
pScrPriv->configChanged = TRUE;
}
diff --git a/randr/rrscreen.c b/randr/rrscreen.c
index 39340cc..36179ae 100644
--- a/randr/rrscreen.c
+++ b/randr/rrscreen.c
@@ -143,7 +143,7 @@ RRScreenSizeNotify(ScreenPtr pScreen)
pScrPriv->height = pScreen->height;
pScrPriv->mmWidth = pScreen->mmWidth;
pScrPriv->mmHeight = pScreen->mmHeight;
- pScrPriv->changed = TRUE;
+ RRSetChanged(pScreen);
/* pScrPriv->sizeChanged = TRUE; */
RRTellChanged(pScreen);
++++++ U_randr_report_changes_when_we_disconnect_a_GPU_slave.patch ++++++
>From 9d26e8eaf5a2d7c3e65670ac20254c60f665c463 Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied(a)redhat.com>
Date: Wed, 9 Jan 2013 14:26:35 +1000
Subject: [PATCH] randr: report changes when we disconnect a GPU slave
When we disconnect an output/offload slave set the changed bits,
so a later TellChanged can do something.
Then when we remove a GPU slave device, sent change notification
to the protocol screen.
This allows hot unplugged USB devices to disappear in clients.
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
Signed-off-by: Dave Airlie <airlied(a)redhat.com>
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
index 9034dad..bcb65ff 100644
--- a/hw/xfree86/common/xf86platformBus.c
+++ b/hw/xfree86/common/xf86platformBus.c
@@ -47,6 +47,7 @@
#include "Pci.h"
#include "xf86platformBus.h"
+#include "randrstr.h"
int platformSlotClaimed;
int xf86_num_platform_devices;
@@ -499,7 +500,7 @@ xf86platformRemoveDevice(int index)
xf86UnclaimPlatformSlot(&xf86_platform_devices[index], NULL);
xf86_remove_platform_device(index);
-
+ RRTellChanged(xf86Screens[0]->pScreen);
out:
return;
}
diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
index 25beee6..2817aaa 100644
--- a/hw/xfree86/modes/xf86RandR12.c
+++ b/hw/xfree86/modes/xf86RandR12.c
@@ -1896,10 +1896,12 @@ xf86RandR14ProviderDestroy(ScreenPtr screen, RRProviderPtr provider)
if (config->randr_provider->offload_sink) {
DetachOffloadGPU(screen);
config->randr_provider->offload_sink = NULL;
+ RRSetChanged(screen);
}
else if (config->randr_provider->output_source) {
DetachOutputGPU(screen);
config->randr_provider->output_source = NULL;
+ RRSetChanged(screen);
}
else if (screen->current_master)
DetachUnboundGPU(screen);
++++++ U_randr_unvalidated_lengths_in_RandR_extension_swapped_procs.patch ++++++
Subject: randr: unvalidated lengths in RandR extension swapped procs
References: bnc#907268, CVE-2014-8101
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
---
randr/rrsdispatch.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/randr/rrsdispatch.c b/randr/rrsdispatch.c
index 08c3b6a..47558cf 100644
--- a/randr/rrsdispatch.c
+++ b/randr/rrsdispatch.c
@@ -27,6 +27,7 @@ SProcRRQueryVersion(ClientPtr client)
{
REQUEST(xRRQueryVersionReq);
+ REQUEST_SIZE_MATCH(xRRQueryVersionReq);
swaps(&stuff->length);
swapl(&stuff->majorVersion);
swapl(&stuff->minorVersion);
@@ -38,6 +39,7 @@ SProcRRGetScreenInfo(ClientPtr client)
{
REQUEST(xRRGetScreenInfoReq);
+ REQUEST_SIZE_MATCH(xRRGetScreenInfoReq);
swaps(&stuff->length);
swapl(&stuff->window);
return (*ProcRandrVector[stuff->randrReqType]) (client);
@@ -69,6 +71,7 @@ SProcRRSelectInput(ClientPtr client)
{
REQUEST(xRRSelectInputReq);
+ REQUEST_SIZE_MATCH(xRRSelectInputReq);
swaps(&stuff->length);
swapl(&stuff->window);
swaps(&stuff->enable);
@@ -152,6 +155,7 @@ SProcRRConfigureOutputProperty(ClientPtr client)
{
REQUEST(xRRConfigureOutputPropertyReq);
+ REQUEST_AT_LEAST_SIZE(xRRConfigureOutputPropertyReq);
swaps(&stuff->length);
swapl(&stuff->output);
swapl(&stuff->property);
--
1.7.9.2
++++++ U_render_check_request_size_before_reading_it.patch ++++++
Subject: render: check request size before reading it
References: bnc#907268, CVE-2014-8100
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
Otherwise we may be reading outside of the client request.
Signed-off-by: Julien Cristau <jcristau(a)debian.org>
Reviewed-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
---
render/render.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/render/render.c b/render/render.c
index e3031da..200e0c8 100644
--- a/render/render.c
+++ b/render/render.c
@@ -276,11 +276,11 @@ ProcRenderQueryVersion(ClientPtr client)
REQUEST(xRenderQueryVersionReq);
+ REQUEST_SIZE_MATCH(xRenderQueryVersionReq);
+
pRenderClient->major_version = stuff->majorVersion;
pRenderClient->minor_version = stuff->minorVersion;
- REQUEST_SIZE_MATCH(xRenderQueryVersionReq);
-
if ((stuff->majorVersion * 1000 + stuff->minorVersion) <
(SERVER_RENDER_MAJOR_VERSION * 1000 + SERVER_RENDER_MINOR_VERSION)) {
rep.majorVersion = stuff->majorVersion;
--
1.7.9.2
++++++ U_render_unvalidated_lengths_in_Render_extn_swapped_procs.patch ++++++
Subject: render: unvalidated lengths in Render extn. swapped procs
References: bnc#907268, CVE-2014-8100
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
---
render/render.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/render/render.c b/render/render.c
index 200e0c8..723f380 100644
--- a/render/render.c
+++ b/render/render.c
@@ -1995,7 +1995,7 @@ static int
SProcRenderQueryVersion(ClientPtr client)
{
REQUEST(xRenderQueryVersionReq);
-
+ REQUEST_SIZE_MATCH(xRenderQueryVersionReq);
swaps(&stuff->length);
swapl(&stuff->majorVersion);
swapl(&stuff->minorVersion);
@@ -2006,6 +2006,7 @@ static int
SProcRenderQueryPictFormats(ClientPtr client)
{
REQUEST(xRenderQueryPictFormatsReq);
+ REQUEST_SIZE_MATCH(xRenderQueryPictFormatsReq);
swaps(&stuff->length);
return (*ProcRenderVector[stuff->renderReqType]) (client);
}
@@ -2014,6 +2015,7 @@ static int
SProcRenderQueryPictIndexValues(ClientPtr client)
{
REQUEST(xRenderQueryPictIndexValuesReq);
+ REQUEST_AT_LEAST_SIZE(xRenderQueryPictIndexValuesReq);
swaps(&stuff->length);
swapl(&stuff->format);
return (*ProcRenderVector[stuff->renderReqType]) (client);
@@ -2029,6 +2031,7 @@ static int
SProcRenderCreatePicture(ClientPtr client)
{
REQUEST(xRenderCreatePictureReq);
+ REQUEST_AT_LEAST_SIZE(xRenderCreatePictureReq);
swaps(&stuff->length);
swapl(&stuff->pid);
swapl(&stuff->drawable);
@@ -2042,6 +2045,7 @@ static int
SProcRenderChangePicture(ClientPtr client)
{
REQUEST(xRenderChangePictureReq);
+ REQUEST_AT_LEAST_SIZE(xRenderChangePictureReq);
swaps(&stuff->length);
swapl(&stuff->picture);
swapl(&stuff->mask);
@@ -2053,6 +2057,7 @@ static int
SProcRenderSetPictureClipRectangles(ClientPtr client)
{
REQUEST(xRenderSetPictureClipRectanglesReq);
+ REQUEST_AT_LEAST_SIZE(xRenderSetPictureClipRectanglesReq);
swaps(&stuff->length);
swapl(&stuff->picture);
swaps(&stuff->xOrigin);
@@ -2065,6 +2070,7 @@ static int
SProcRenderFreePicture(ClientPtr client)
{
REQUEST(xRenderFreePictureReq);
+ REQUEST_SIZE_MATCH(xRenderFreePictureReq);
swaps(&stuff->length);
swapl(&stuff->picture);
return (*ProcRenderVector[stuff->renderReqType]) (client);
@@ -2074,6 +2080,7 @@ static int
SProcRenderComposite(ClientPtr client)
{
REQUEST(xRenderCompositeReq);
+ REQUEST_SIZE_MATCH(xRenderCompositeReq);
swaps(&stuff->length);
swapl(&stuff->src);
swapl(&stuff->mask);
@@ -2093,6 +2100,7 @@ static int
SProcRenderScale(ClientPtr client)
{
REQUEST(xRenderScaleReq);
+ REQUEST_SIZE_MATCH(xRenderScaleReq);
swaps(&stuff->length);
swapl(&stuff->src);
swapl(&stuff->dst);
@@ -2193,6 +2201,7 @@ static int
SProcRenderCreateGlyphSet(ClientPtr client)
{
REQUEST(xRenderCreateGlyphSetReq);
+ REQUEST_SIZE_MATCH(xRenderCreateGlyphSetReq);
swaps(&stuff->length);
swapl(&stuff->gsid);
swapl(&stuff->format);
@@ -2203,6 +2212,7 @@ static int
SProcRenderReferenceGlyphSet(ClientPtr client)
{
REQUEST(xRenderReferenceGlyphSetReq);
+ REQUEST_SIZE_MATCH(xRenderReferenceGlyphSetReq);
swaps(&stuff->length);
swapl(&stuff->gsid);
swapl(&stuff->existing);
@@ -2213,6 +2223,7 @@ static int
SProcRenderFreeGlyphSet(ClientPtr client)
{
REQUEST(xRenderFreeGlyphSetReq);
+ REQUEST_SIZE_MATCH(xRenderFreeGlyphSetReq);
swaps(&stuff->length);
swapl(&stuff->glyphset);
return (*ProcRenderVector[stuff->renderReqType]) (client);
@@ -2227,6 +2238,7 @@ SProcRenderAddGlyphs(ClientPtr client)
xGlyphInfo *gi;
REQUEST(xRenderAddGlyphsReq);
+ REQUEST_AT_LEAST_SIZE(xRenderAddGlyphsReq);
swaps(&stuff->length);
swapl(&stuff->glyphset);
swapl(&stuff->nglyphs);
@@ -2261,6 +2273,7 @@ static int
SProcRenderFreeGlyphs(ClientPtr client)
{
REQUEST(xRenderFreeGlyphsReq);
+ REQUEST_AT_LEAST_SIZE(xRenderFreeGlyphsReq);
swaps(&stuff->length);
swapl(&stuff->glyphset);
SwapRestL(stuff);
@@ -2278,6 +2291,7 @@ SProcRenderCompositeGlyphs(ClientPtr client)
int size;
REQUEST(xRenderCompositeGlyphsReq);
+ REQUEST_AT_LEAST_SIZE(xRenderCompositeGlyphsReq);
switch (stuff->renderReqType) {
default:
--
1.7.9.2
++++++ U_revert_dri2_realloc_dri2_drawable_if-pixmap_serial_changes.patch ++++++
>From 77e51d5bbb97eb5c9d9dbff9a7c44d7e53620e68 Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric(a)anholt.net>
Date: Mon, 17 Jun 2013 22:51:19 +0000
Subject: Revert "DRI2: re-allocate DRI2 drawable if pixmap serial changes"
This reverts commit 3209b094a3b1466b579e8020e12a4f3fa78a5f3f. After a
long debug session by Paul Berry, it appears that this was the commit
that has been producing sporadic failures in piglit front buffer
rendering tests for the last several years.
GetBuffers may return fresh buffers with invalid contents at a couple
reasonable times:
- When first asked for a non-fake-front buffer.
- When the drawable size is changed, an Invalidate has been sent, and
obviously the app needs to redraw the whole buffer.
- After a glXSwapBuffers(), GL allows the backbuffer to be undefined,
and an Invalidate was sent to tell the GL that it should grab these
appropriate new buffers to avoid stalling.
But with the patch being reverted, GetBuffers would also return fresh
invalid buffers when the drawable serial number changed, which is
approximately "whenever, for any reason". The app is not expecting
invalid buffer contents "whenever", nor is it valid. Because the GL
usually only GetBuffers after an Invalidate is sent, and the new
buffer allocation only happened during a GetBuffers, most apps saw no
problems. But apps that do (fake-)frontbuffer rendering do frequently
ask the server for the front buffer (since we drop the fake front
allocation when we're not doing front buffer rendering), and if the
drawable serial got bumped midway through a draw, the server would
pointlessly ditch the front *and* backbuffer full of important
drawing, resulting in bad rendering.
The patch was originally to fix bugzilla:
https://bugs.freedesktop.org/show_bug.cgi?id=28365
Specifically:
To reproduce, start with a large-ish display (i.e. 1680x1050 on my
laptop), use the patched glxgears from bug 28252 to add the
-override option. Then run glxgears -override -geometry 640x480
to create a 640x480 window in the top left corner, which will work
fine. Next, run xrandr -s 640x480 and watch the fireworks.
I've tested with an override-redirect glxgears, both with vblank sync
enabled and disabled, both with gnome-shell and no window manager at
all, before and after this patch. The only problem observed was that
before and after the revert, sometimes when alt-tabbing to kill my
gears after completing the test gnome-shell would get confused about
override-redirectness of the glxgears window (according to a log
message) and apparently not bother doing any further compositing.
Signed-off-by: Eric Anholt <eric(a)anholt.net>
Reviewed-by: Keith Packard <keithp(a)keithp.com>
Reviewed-by: Chris Wilson <chris(a)chris-wilson.co.uk>
Tested-by: Chris Wilson <chris(a)chris-wilson.co.uk>
Signed-off-by: Keith Packard <keithp(a)keithp.com>
---
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index 40963c3..0b047f0 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -99,7 +99,6 @@ typedef struct _DRI2Drawable {
CARD64 last_swap_msc; /* msc at completion of most recent swap */
CARD64 last_swap_ust; /* ust at completion of most recent swap */
int swap_limit; /* for N-buffering */
- unsigned long serialNumber;
Bool needInvalidate;
int prime_id;
PixmapPtr prime_slave_pixmap;
@@ -189,19 +188,6 @@ DRI2GetDrawable(DrawablePtr pDraw)
}
}
-static unsigned long
-DRI2DrawableSerial(DrawablePtr pDraw)
-{
- ScreenPtr pScreen = pDraw->pScreen;
- PixmapPtr pPix;
-
- if (pDraw->type != DRAWABLE_WINDOW)
- return pDraw->serialNumber;
-
- pPix = pScreen->GetWindowPixmap((WindowPtr) pDraw);
- return pPix->drawable.serialNumber;
-}
-
static DRI2DrawablePtr
DRI2AllocateDrawable(DrawablePtr pDraw)
{
@@ -235,7 +221,6 @@ DRI2AllocateDrawable(DrawablePtr pDraw)
pPriv->last_swap_msc = 0;
pPriv->last_swap_ust = 0;
xorg_list_init(&pPriv->reference_list);
- pPriv->serialNumber = DRI2DrawableSerial(pDraw);
pPriv->needInvalidate = FALSE;
pPriv->redirectpixmap = NULL;
pPriv->prime_slave_pixmap = NULL;
@@ -493,7 +478,6 @@ allocate_or_reuse_buffer(DrawablePtr pDraw, DRI2ScreenPtr ds,
|| attachment == DRI2BufferFrontLeft
|| !dimensions_match || (pPriv->buffers[old_buf]->format != format)) {
*buffer = create_buffer (pDraw, attachment, format);
- pPriv->serialNumber = DRI2DrawableSerial(pDraw);
return TRUE;
}
@@ -559,8 +543,7 @@ do_get_buffers(DrawablePtr pDraw, int *width, int *height,
ds = DRI2GetScreen(pDraw->pScreen);
dimensions_match = (pDraw->width == pPriv->width)
- && (pDraw->height == pPriv->height)
- && (pPriv->serialNumber == DRI2DrawableSerial(pDraw));
+ && (pDraw->height == pPriv->height);
buffers = calloc((count + 1), sizeof(buffers[0]));
if (!buffers)
--
cgit v0.9.0.2-2-gbebe
++++++ U_unchecked_malloc_may_allow_unauthed_client_to_crash_Xserver.patch ++++++
Subject: unchecked malloc may allow unauthed client to crash Xserver
References: bnc#907268, CVE-2014-8091
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
authdes_ezdecode() calls malloc() using a length provided by the
connection handshake sent by a newly connected client in order
to authenticate to the server, so should be treated as untrusted.
It didn't check if malloc() failed before writing to the newly
allocated buffer, so could lead to a server crash if the server
fails to allocate memory (up to UINT16_MAX bytes, since the len
field is a CARD16 in the X protocol).
Reported-by: Ilja Van Sprundel <ivansprundel(a)ioactive.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
---
os/rpcauth.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/os/rpcauth.c b/os/rpcauth.c
index d60ea35..413cc61 100644
--- a/os/rpcauth.c
+++ b/os/rpcauth.c
@@ -66,6 +66,10 @@ authdes_ezdecode(const char *inmsg, int len)
SVCXPRT xprt;
temp_inmsg = malloc(len);
+ if (temp_inmsg == NULL) {
+ why = AUTH_FAILED; /* generic error, since there is no AUTH_BADALLOC */
+ return NULL;
+ }
memmove(temp_inmsg, inmsg, len);
memset((char *) &msg, 0, sizeof(msg));
--
1.7.9.2
++++++ U_xcmisc_unvalidated_length_in_SProcXCMiscGetXIDList.patch ++++++
Subject: xcmisc: unvalidated length in SProcXCMiscGetXIDList()
References: bnc#907268, CVE-2014-8096
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
---
Xext/xcmisc.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/Xext/xcmisc.c b/Xext/xcmisc.c
index 034bfb6..1e91010 100644
--- a/Xext/xcmisc.c
+++ b/Xext/xcmisc.c
@@ -167,6 +167,7 @@ static int
SProcXCMiscGetXIDList(ClientPtr client)
{
REQUEST(xXCMiscGetXIDListReq);
+ REQUEST_SIZE_MATCH(xXCMiscGetXIDListReq);
swaps(&stuff->length);
swapl(&stuff->count);
--
1.7.9.2
++++++ U_xfixes_unvalidated_length_in_SProcXFixesSelectSelectionInput.patch ++++++
Subject: xfixes: unvalidated length in SProcXFixesSelectSelectionInput
References: bnc#907268, CVE-2014-8102
Patch-Mainline: Upstream
Signed-off-by: Michal Srb <msrb(a)suse.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith(a)oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer(a)who-t.net>
---
xfixes/select.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/xfixes/select.c b/xfixes/select.c
index c088ed3..e964d58 100644
--- a/xfixes/select.c
+++ b/xfixes/select.c
@@ -201,6 +201,7 @@ SProcXFixesSelectSelectionInput(ClientPtr client)
{
REQUEST(xXFixesSelectSelectionInputReq);
+ REQUEST_SIZE_MATCH(xXFixesSelectSelectionInputReq);
swaps(&stuff->length);
swapl(&stuff->window);
swapl(&stuff->selection);
--
1.7.9.2
++++++ U_xkb-check-strings-length-against-request-size.patch ++++++
Git-commit: cc830bd3a5b44796f1e8721f336dca4f565a8130
Author: Olivier Fourdan <ofourdan(a)redhat.com>
Subject: xkb: Check strings length against request size
References: bnc#915810, CVE-2015-0255
Signed-off-by: Michal Srb <msrb(a)suse.com>
Ensure that the given strings length in an XkbSetGeometry request remain
within the limits of the size of the request.
Signed-off-by: Olivier Fourdan <ofourdan(a)redhat.com>
---
xkb/xkb.c | 65 +++++++++++++++++++++++++++++++++++++++------------------------
1 file changed, 40 insertions(+), 25 deletions(-)
Index: xorg-server-1.15.2/xkb/xkb.c
===================================================================
--- xorg-server-1.15.2.orig/xkb/xkb.c
+++ xorg-server-1.15.2/xkb/xkb.c
@@ -4957,26 +4957,29 @@ ProcXkbGetGeometry(ClientPtr client)
/***====================================================================***/
-static char *
-_GetCountedString(char **wire_inout, Bool swap)
+static Status
+_GetCountedString(char **wire_inout, ClientPtr client, char **str)
{
- char *wire, *str;
- CARD16 len, *plen;
+ char *wire, *next;
+ CARD16 len;
wire = *wire_inout;
- plen = (CARD16 *) wire;
- if (swap) {
- swaps(plen);
- }
- len = *plen;
- str = malloc(len + 1);
- if (str) {
- memcpy(str, &wire[2], len);
- str[len] = '\0';
+ len = *(CARD16 *) wire;
+ if (client->swapped) {
+ swaps(&len);
}
- wire += XkbPaddedSize(len + 2);
- *wire_inout = wire;
- return str;
+ next = wire + XkbPaddedSize(len + 2);
+ /* Check we're still within the size of the request */
+ if (client->req_len <
+ bytes_to_int32(next - (char *) client->requestBuffer))
+ return BadValue;
+ *str = malloc(len + 1);
+ if (!*str)
+ return BadAlloc;
+ memcpy(*str, &wire[2], len);
+ *(*str + len) = '\0';
+ *wire_inout = next;
+ return Success;
}
static Status
@@ -4986,6 +4989,7 @@ _CheckSetDoodad(char **wire_inout,
char *wire;
xkbDoodadWireDesc *dWire;
XkbDoodadPtr doodad;
+ Status status;
dWire = (xkbDoodadWireDesc *) (*wire_inout);
wire = (char *) &dWire[1];
@@ -5033,8 +5037,14 @@ _CheckSetDoodad(char **wire_inout,
doodad->text.width = dWire->text.width;
doodad->text.height = dWire->text.height;
doodad->text.color_ndx = dWire->text.colorNdx;
- doodad->text.text = _GetCountedString(&wire, client->swapped);
- doodad->text.font = _GetCountedString(&wire, client->swapped);
+ status = _GetCountedString(&wire, client, &doodad->text.text);
+ if (status != Success)
+ return status;
+ status = _GetCountedString(&wire, client, &doodad->text.font);
+ if (status != Success) {
+ free (doodad->text.text);
+ return status;
+ }
break;
case XkbIndicatorDoodad:
if (dWire->indicator.onColorNdx >= geom->num_colors) {
@@ -5069,7 +5079,9 @@ _CheckSetDoodad(char **wire_inout,
}
doodad->logo.color_ndx = dWire->logo.colorNdx;
doodad->logo.shape_ndx = dWire->logo.shapeNdx;
- doodad->logo.logo_name = _GetCountedString(&wire, client->swapped);
+ status = _GetCountedString(&wire, client, &doodad->logo.logo_name);
+ if (status != Success)
+ return status;
break;
default:
client->errorValue = _XkbErrCode2(0x4F, dWire->any.type);
@@ -5301,18 +5313,20 @@ _CheckSetGeom(XkbGeometryPtr geom, xkbSe
char *wire;
wire = (char *) &req[1];
- geom->label_font = _GetCountedString(&wire, client->swapped);
+ status = _GetCountedString(&wire, client, &geom->label_font);
+ if (status != Success)
+ return status;
for (i = 0; i < req->nProperties; i++) {
char *name, *val;
- name = _GetCountedString(&wire, client->swapped);
- if (!name)
- return BadAlloc;
- val = _GetCountedString(&wire, client->swapped);
- if (!val) {
+ status = _GetCountedString(&wire, client, &name);
+ if (status != Success)
+ return status;
+ status = _GetCountedString(&wire, client, &val);
+ if (status != Success) {
free(name);
- return BadAlloc;
+ return status;
}
if (XkbAddGeomProperty(geom, name, val) == NULL) {
free(name);
@@ -5346,9 +5360,9 @@ _CheckSetGeom(XkbGeometryPtr geom, xkbSe
for (i = 0; i < req->nColors; i++) {
char *name;
- name = _GetCountedString(&wire, client->swapped);
- if (!name)
- return BadAlloc;
+ status = _GetCountedString(&wire, client, &name);
+ if (status != Success)
+ return status;
if (!XkbAddGeomColor(geom, name, geom->num_colors)) {
free(name);
return BadAlloc;
++++++ n_Xvnc-pthread.diff ++++++
--- xorg-server-1.10.4/hw/vnc/Makefile.am.orig 2011-09-06 15:25:27.000000000 +0000
+++ xorg-server-1.10.4/hw/vnc/Makefile.am 2011-09-06 15:26:40.000000000 +0000
@@ -37,6 +37,7 @@
JPEG_LIBS = -ljpeg
CRYPT_LIBS = -lcrypt
Z_LIBS = -lz
+PTHREAD_LIBS = -lpthread
AM_CFLAGS = $(DIX_CFLAGS) $(XVNC_CFLAGS) -I$(top_srcdir)/hw/dmx/vnc -DCHROMIUM=1
@@ -48,7 +49,8 @@
$(CRYPT_LIBS) \
$(XSERVER_SYS_LIBS) \
$(VNCMODULES_LIBS) \
- $(Z_LIBS)
+ $(Z_LIBS) \
+ $(PTHREAD_LIBS)
relink:
++++++ n_autoconf-On-Linux-give-fbdev-driver-a-higher-precedence-than-vesa.patch ++++++
From: Egbert Eich <Egbert Eich eich(a)suse.de>
Date: Thu Aug 8 21:43:44 2013 +0200
Subject: [PATCH]autoconf: On Linux give fbdev driver a higher precedence than vesa
Patch-Mainline: never
Git-commit: ccda2310eedf55215de792cdd5a793e3bf58fed1
Git-repo:
References:
Signed-off-by: Egbert Eich <eich(a)suse.com>
At SUSE we want to perfer the fbdev driver over the VESA driver
at autoconfiguration as it is expected that fbdev will work in
allmost all situations where no native driver can be found -
even under UEFI and with secure boot.
Signed-off-by: Egbert Eich <Egbert Eich eich(a)suse.de>
---
hw/xfree86/common/xf86AutoConfig.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
index 2da792e..252fe37 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -277,26 +277,26 @@ listPossibleVideoDrivers(char *matches[], int nmatches)
if (i < (nmatches - 1))
i = xf86PciMatchDriver(matches, nmatches);
#endif
+
+#if defined(__linux__)
+ matches[i++] = xnfstrdup("modesetting");
+#endif
/* Fallback to platform default hardware */
if (i < (nmatches - 1)) {
-#if defined(__i386__) || defined(__amd64__) || defined(__hurd__)
- matches[i++] = xnfstrdup("vesa");
-#elif defined(__sparc__) && !defined(sun)
+#if defined(__sparc__) && !defined(sun)
matches[i++] = xnfstrdup("sunffb");
+#else
+ matches[i++] = xnfstrdup("fbdev");
#endif
}
-#if defined(__linux__)
- matches[i++] = xnfstrdup("modesetting");
-#endif
-
#if !defined(sun)
/* Fallback to platform default frame buffer driver */
if (i < (nmatches - 1)) {
#if !defined(__linux__) && defined(__sparc__)
matches[i++] = xnfstrdup("wsfb");
-#else
- matches[i++] = xnfstrdup("fbdev");
+#elif defined(__i386__) || defined(__amd64__) || defined(__hurd__)
+ matches[i++] = xnfstrdup("vesa");
#endif
}
#endif /* !sun */
++++++ n_xorg-x11-server-rpmmacros.patch ++++++
Index: xorg-server-1.12.1/configure.ac
===================================================================
--- xorg-server-1.12.1.orig/configure.ac
+++ xorg-server-1.12.1/configure.ac
@@ -2232,4 +2232,5 @@ test/Makefile
test/xi2/Makefile
xserver.ent
xorg-server.pc
+xorg-x11-server.macros
])
++++++ pre_checkin.sh ++++++
#!/bin/sh
# pre_checking.sh
# Licensed under the same condition as the xorg-server.
# This script updates the .spec file (based on .spec.in) and inject versioned ABI Symbols from the X-Server,
# stored in a template file xorg-server-provides. The content of this file is verified during build, as the
# same script runs then again, extracting ABI versions from the source to be built. This ensures we can't
# publish a package with wrong ABI Versions being provided as part of the RPM Metadata.
# Driver-, Input and extension-packages are supposed to use the provided macros to ensure correct Requires.
# extract ABI Versions... this function is copied from configure.ac
extract_abi() {
grep ^.define.*${1}_VERSION ${xorg_src}/hw/xfree86/common/xf86Module.h | tr '(),' ' .' | awk '{ print $4$5 }'
}
if [ "$1" == "--tar" ]; then
tmpdir=$(mktemp -d)
tar xf "$2" -C ${tmpdir}
xorg_src=${tmpdir}/*
elif [ "$1" == "--verify" ]; then
xorg_src="$2"
prv_ext=".build"
else
echo "Wrong usage of this script"
echo "$0 can be started in two ways:"
echo "1: $0 --tar {xorg-server-xxxx.tar.bz2}"
echo "2: $0 --verify {source-folder}"
echo "Variant 1 creates the file xorg-server-provides to be included in the src rpm"
echo "Variant 2 is being called during build to ensure the ABI provides match the expectations."
echo ""
echo ""
echo "Trying to guess the right tarball"
sh $0 --tar xorg-server-*.tar.bz2
echo "... Please verify if the result makes sense"
exit 2
fi
abi_ansic=`extract_abi ANSIC`
abi_videodrv=`extract_abi VIDEODRV`
abi_xinput=`extract_abi XINPUT`
abi_extension=`extract_abi EXTENSION`
A="Provides: X11_ABI_XINPUT = ${abi_xinput}\nProvides: X11_ABI_VIDEODRV = ${abi_videodrv}\nProvides: X11_ABI_ANSIC = ${abi_ansic}\nProvides: X11_ABI_EXTENSION = ${abi_extension}"
echo -e $A > xorg-server-provides${prv_ext}
if [ "$1" == "--tar" ]; then
if [ -d ${tmpdir} ]; then
rm -rf ${tmpdir}
fi
elif [ "$1" == "--verify" ]; then
diff "$3" xorg-server-provides${prv_ext}
if [ $? -gt 0 ]; then
echo "The ABI verification failed... please run $0 before checking in"
exit 1
fi
fi
++++++ sysconfig.displaymanager.template ++++++
## Type: string(Xorg)
## Path: Desktop/Display manager
## Default: "Xorg"
#
DISPLAYMANAGER_XSERVER="Xorg"
++++++ u_Panning-Set-panning-state-in-xf86RandR12ScreenSetSize.patch ++++++
From: Egbert Eich <eich(a)suse.de>
Date: Fri Jan 15 16:52:18 2016 +0100
Subject: [PATCH]Panning: Set panning state in xf86RandR12ScreenSetSize()
Patch-mainline: to be upstreamed
References: boo#771521
Signed-off-by: Egbert Eich <eich(a)suse.com>
References: boo#771521
Signed-off-by: Egbert Eich <eich(a)suse.com>
Right after verifying the panning area the per-crtc panning state should
be set.
This fixes panning when set in the configuration.
Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=771521
Signed-off-by: Egbert Eich <eich(a)suse.de>
---
hw/xfree86/modes/xf86RandR12.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
index 7f570cf..5d33c79 100644
--- a/hw/xfree86/modes/xf86RandR12.c
+++ b/hw/xfree86/modes/xf86RandR12.c
@@ -714,8 +714,8 @@ xf86RandR12ScreenSetSize(ScreenPtr pScreen,
if (crtc->panningTrackingArea.y2 > crtc->panningTrackingArea.y1)
crtc->panningTrackingArea.y2 += height - pScreen->height;
xf86RandR13VerifyPanningArea(crtc, width, height);
+ panning = panning ? TRUE : PANNING_ENABLED (crtc);
xf86RandR13Pan(crtc, randrp->pointerX, randrp->pointerY);
- panning = TRUE;
}
}
@@ -724,6 +724,7 @@ xf86RandR12ScreenSetSize(ScreenPtr pScreen,
pScreen->height = pScrnPix->drawable.height = height;
randrp->mmWidth = pScreen->mmWidth = mmWidth;
randrp->mmHeight = pScreen->mmHeight = mmHeight;
+ randrp->panning = panning;
xf86SetViewport(pScreen, pScreen->width - 1, pScreen->height - 1);
xf86SetViewport(pScreen, 0, 0);
++++++ u_aarch64-support.patch ++++++
Subject: Basic support for aarch64
Author: Andreas Schwab <schwab(a)suse.de>
Index: xorg-server-1.13.2/hw/xfree86/common/compiler.h
===================================================================
--- xorg-server-1.13.2.orig/hw/xfree86/common/compiler.h
+++ xorg-server-1.13.2/hw/xfree86/common/compiler.h
@@ -1351,7 +1351,7 @@ stl_u(unsigned long val, unsigned int *p
#else /* ix86 */
#if !defined(__SUNPRO_C)
-#if !defined(FAKEIT) && !defined(__mc68000__) && !defined(__arm__) && !defined(__sh__) && !defined(__hppa__) && !defined(__s390__) && !defined(__m32r__)
+#if !defined(FAKEIT) && !defined(__mc68000__) && !defined(__arm__) && !defined(__sh__) && !defined(__hppa__) && !defined(__s390__) && !defined(__m32r__) && !defined(__aarch64__)
#ifdef GCCUSESGAS
/*
Index: xorg-server-1.13.2/hw/xfree86/os-support/linux/lnx_video.c
===================================================================
--- xorg-server-1.13.2.orig/hw/xfree86/os-support/linux/lnx_video.c
+++ xorg-server-1.13.2/hw/xfree86/os-support/linux/lnx_video.c
@@ -58,7 +58,8 @@ static Bool ExtendedEnabled = FALSE;
!defined(__sparc__) && \
!defined(__mips__) && \
!defined(__nds32__) && \
- !defined(__arm__)
+ !defined(__arm__) && \
+ !defined(__aarch64__)
/*
* Due to conflicts with "compiler.h", don't rely on <sys/io.h> to declare
Index: xorg-server-1.13.2/include/servermd.h
===================================================================
--- xorg-server-1.13.2.orig/include/servermd.h
+++ xorg-server-1.13.2/include/servermd.h
@@ -286,6 +286,20 @@ SOFTWARE.
#define GLYPHPADBYTES 4
#endif /* linux/s390 */
+#ifdef __aarch64__
+
+#ifdef __AARCH64EL__
+#define IMAGE_BYTE_ORDER LSBFirst
+#define BITMAP_BIT_ORDER LSBFirst
+#endif
+#ifdef __AARCH64EB__
+#define IMAGE_BYTE_ORDER MSBFirst
+#define BITMAP_BIT_ORDER MSBFirst
+#endif
+#define GLYPHPADBYTES 4
+
+#endif /* __aarch64__ */
+
/* size of buffer to use with GetImage, measured in bytes. There's obviously
* a trade-off between the amount of heap used and the number of times the
* ddx routine has to be called.
++++++ u_disable-acpi-code.patch ++++++
From: Adam Jackson <ajax(a)redhat.com>
Date: Wed, 9 Nov 2011 11:52:06 +1000
Subject: [PATCH 2/7] Don't build the ACPI code.
No good can come of this.
---
configure.ac | 1 -
1 file changed, 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index a12783c..54f4464 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1620,7 +1620,6 @@ if test "x$XORG" = xyes; then
linux_alpha=yes
;;
i*86|amd64*|x86_64*|ia64*)
- linux_acpi="yes"
;;
*)
;;
--
1.7.10.1
++++++ u_dri2_fix-detection-of-wrong-prime_id-in-getscreenprime.patch ++++++
Subject: [PATCH] dri2: Fix wrong prime_id detection in GetScreenPrime.
Author: Michal Srb <msrb(a)suse.com>
Patch-Mainline: To be upstreamed
References: bnc#846352
Checking the iterating variable ("slave") against null can not detect if the
xorg_list_for_each_entry finished without break being invoked - it will be
always non-null. This caused segfault whenever someone tried to use DRI_PRIME
with incorrect id.
Restructurize it to work as expected.
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index 729a323..5b2c662 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -156,11 +156,9 @@ GetScreenPrime(ScreenPtr master, int prime_id)
ds = DRI2GetScreen(slave);
if (ds->prime_id == prime_id)
- break;
+ return slave;
}
- if (!slave)
- return master;
- return slave;
+ return master;
}
static DRI2ScreenPtr
++++++ u_exa-only-draw-valid-trapezoids.patch ++++++
Author: Maarten Lankhorst <maarten.lankhorst(a)canonical.com>
Subject: exa: only draw valid trapezoids
Patch-Mainline: To be upstreamed
References: bnc#853846 CVE-2013-6424
Signed-off-by: Michal Srb <msrb(a)suse.com>
diff --git a/exa/exa_render.c b/exa/exa_render.c
index 172e2b5..807eeba 100644
--- a/exa/exa_render.c
+++ b/exa/exa_render.c
@@ -1141,7 +1141,8 @@ exaTrapezoids(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
exaPrepareAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
for (; ntrap; ntrap--, traps++)
- (*ps->RasterizeTrapezoid) (pPicture, traps, -bounds.x1, -bounds.y1);
+ if (xTrapezoidValid(traps))
+ (*ps->RasterizeTrapezoid) (pPicture, traps, -bounds.x1, -bounds.y1);
exaFinishAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
xRel = bounds.x1 + xSrc - xDst;
diff --git a/render/picture.h b/render/picture.h
index c85353a..fcd6401 100644
--- a/render/picture.h
+++ b/render/picture.h
@@ -211,7 +211,7 @@ typedef pixman_fixed_t xFixed;
/* whether 't' is a well defined not obviously empty trapezoid */
#define xTrapezoidValid(t) ((t)->left.p1.y != (t)->left.p2.y && \
(t)->right.p1.y != (t)->right.p2.y && \
- (int) ((t)->bottom - (t)->top) > 0)
+ ((t)->bottom > (t)->top))
/*
* Standard NTSC luminance conversions:
++++++ u_kdrive-UnregisterFd-Fix-off-by-one.patch ++++++
From: Egbert Eich <eich(a)suse.de>
Date: Tue Nov 24 16:10:08 2015 +0100
Subject: [PATCH]kdrive/UnregisterFd: Fix off by one
Patch-mainline: to be upstreamed
References: boo#867483
Signed-off-by: Egbert Eich <eich(a)suse.com>
References: boo#867483
Signed-off-by: Egbert Eich <eich(a)suse.com>
The number of FDs has been decremented already, therefore this
number contains the index of the top one that is to me moved down.
Signed-off-by: Egbert Eich <eich(a)suse.de>
---
hw/kdrive/src/kinput.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index 09aae44..b1068bb 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -221,7 +221,7 @@ KdUnregisterFd(void *closure, int fd, Bool do_close)
if (do_close)
close(kdInputFds[i].fd);
kdNumInputFds--;
- for (j = i; j < (kdNumInputFds - 1); j++)
+ for (j = i; j < kdNumInputFds; j++)
kdInputFds[j] = kdInputFds[j + 1];
break;
}
++++++ u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch ++++++
>From 6d0da2a4d5c31d055674f482d3d1afe308ed8eeb Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb(a)suse.com>
Date: Mon, 7 Oct 2013 17:55:30 +0300
Subject: [PATCH] randr: Allow RRSelectInput for ProviderChange and
ResourceChange events.
Reviewed-by: Dave Airlie <airlied(a)redhat.com>
Signed-off-by: Michal Srb <msrb(a)suse.com>
diff --git a/randr/rrdispatch.c b/randr/rrdispatch.c
index 7fbc9f0..f050d38 100644
--- a/randr/rrdispatch.c
+++ b/randr/rrdispatch.c
@@ -92,7 +92,9 @@ ProcRRSelectInput(ClientPtr client)
RRCrtcChangeNotifyMask |
RROutputChangeNotifyMask |
RROutputPropertyNotifyMask |
- RRProviderPropertyNotifyMask)) {
+ RRProviderChangeNotifyMask |
+ RRProviderPropertyNotifyMask |
+ RRResourceChangeNotifyMask)) {
ScreenPtr pScreen = pWin->drawable.pScreen;
rrScrPriv(pScreen);
++++++ u_randr_deliver_output_and_crtc_events_of_attached_output.patch ++++++
>From 0ad777cecd414d4c4b3326cc25580833535b0c0b Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb(a)suse.com>
Date: Fri, 4 Oct 2013 17:46:50 +0300
Subject: [PATCH] randr: deliver Output and Crtc events of attached output
providers.
Consider all attached output providers when looking for changed outputs and
crtcs.
Reviewed-by: Dave Airlie <airlied(a)redhat.com>
Signed-off-by: Michal Srb <msrb(a)suse.com>
diff --git a/randr/randr.c b/randr/randr.c
index 9cec6f6..3c51427 100755
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -478,6 +478,16 @@ TellChanged(WindowPtr pWin, pointer value)
if (crtc->changed)
RRDeliverCrtcEvent(client, pWin, crtc);
}
+
+ xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ for (i = 0; i < pSlaveScrPriv->numCrtcs; i++) {
+ RRCrtcPtr crtc = pSlaveScrPriv->crtcs[i];
+
+ if (crtc->changed)
+ RRDeliverCrtcEvent(client, pWin, crtc);
+ }
+ }
}
if (pRREvent->mask & RROutputChangeNotifyMask) {
@@ -487,6 +497,16 @@ TellChanged(WindowPtr pWin, pointer value)
if (output->changed)
RRDeliverOutputEvent(client, pWin, output);
}
+
+ xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ for (i = 0; i < pSlaveScrPriv->numOutputs; i++) {
+ RROutputPtr output = pSlaveScrPriv->outputs[i];
+
+ if (output->changed)
+ RRDeliverOutputEvent(client, pWin, output);
+ }
+ }
}
if (pRREvent->mask & RRProviderChangeNotifyMask) {
@@ -581,6 +601,10 @@ RRTellChanged(ScreenPtr pScreen)
xorg_list_for_each_entry(iter, &master->output_slave_list, output_head) {
pSlaveScrPriv = rrGetScrPriv(iter);
pSlaveScrPriv->provider->changed = FALSE;
+ for (i = 0; i < pSlaveScrPriv->numOutputs; i++)
+ pSlaveScrPriv->outputs[i]->changed = FALSE;
+ for (i = 0; i < pSlaveScrPriv->numCrtcs; i++)
+ pSlaveScrPriv->crtcs[i]->changed = FALSE;
}
xorg_list_for_each_entry(iter, &master->offload_slave_list, offload_head) {
pSlaveScrPriv = rrGetScrPriv(iter);
++++++ u_randr_send_rrproviderchangenotify_event.patch ++++++
>From 6ec75c2f85c14c805f4433a17a56774594d8641c Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb(a)suse.com>
Date: Fri, 4 Oct 2013 15:59:34 +0300
Subject: [PATCH] randr: send RRProviderChangeNotify event
Send RRProviderChangeNotify event when a provider becomes output source or
offload sink.
Reviewed-by: Dave Airlie <airlied(a)redhat.com>
Signed-off-by: Michal Srb <msrb(a)suse.com>
diff --git a/randr/randr.c b/randr/randr.c
old mode 100644
new mode 100755
index cb6fce7..fa0a4da
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -426,6 +426,8 @@ TellChanged(WindowPtr pWin, pointer value)
RREventPtr *pHead, pRREvent;
ClientPtr client;
ScreenPtr pScreen = pWin->drawable.pScreen;
+ ScreenPtr iter;
+ rrScrPrivPtr pSlaveScrPriv;
rrScrPriv(pScreen);
int i;
@@ -460,6 +462,24 @@ TellChanged(WindowPtr pWin, pointer value)
RRDeliverOutputEvent(client, pWin, output);
}
}
+
+ if (pRREvent->mask & RRProviderChangeNotifyMask) {
+ xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ if (pSlaveScrPriv->provider->changed)
+ RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider);
+ }
+ xorg_list_for_each_entry(iter, &pScreen->offload_slave_list, offload_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ if (pSlaveScrPriv->provider->changed)
+ RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider);
+ }
+ xorg_list_for_each_entry(iter, &pScreen->unattached_list, unattached_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ if (pSlaveScrPriv->provider->changed)
+ RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider);
+ }
+ }
}
return WT_WALKCHILDREN;
}
@@ -496,6 +516,8 @@ RRTellChanged(ScreenPtr pScreen)
rrScrPriv(pScreen);
rrScrPrivPtr mastersp;
int i;
+ ScreenPtr iter;
+ rrScrPrivPtr pSlaveScrPriv;
if (pScreen->isGPU) {
master = pScreen->current_master;
@@ -519,6 +541,20 @@ RRTellChanged(ScreenPtr pScreen)
pScrPriv->outputs[i]->changed = FALSE;
for (i = 0; i < pScrPriv->numCrtcs; i++)
pScrPriv->crtcs[i]->changed = FALSE;
+
+ xorg_list_for_each_entry(iter, &master->output_slave_list, output_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ pSlaveScrPriv->provider->changed = FALSE;
+ }
+ xorg_list_for_each_entry(iter, &master->offload_slave_list, offload_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ pSlaveScrPriv->provider->changed = FALSE;
+ }
+ xorg_list_for_each_entry(iter, &master->unattached_list, unattached_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ pSlaveScrPriv->provider->changed = FALSE;
+ }
+
if (mastersp->layoutChanged) {
pScrPriv->layoutChanged = FALSE;
RRPointerScreenConfigured(master);
diff --git a/randr/randrstr.h b/randr/randrstr.h
old mode 100644
new mode 100755
index 2babfed..c933349
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -164,6 +164,7 @@ struct _rrProvider {
int nameLength;
RRPropertyPtr properties;
Bool pendingProperties;
+ Bool changed;
struct _rrProvider *offload_sink;
struct _rrProvider *output_source;
};
@@ -923,6 +924,9 @@ RRProviderSetCapabilities(RRProviderPtr provider, uint32_t capabilities);
extern _X_EXPORT Bool
RRProviderLookup(XID id, RRProviderPtr *provider_p);
+extern _X_EXPORT void
+RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider);
+
/* rrproviderproperty.c */
extern _X_EXPORT void
diff --git a/randr/rrprovider.c b/randr/rrprovider.c
old mode 100644
new mode 100755
index b321e62..2334ad2
--- a/randr/rrprovider.c
+++ b/randr/rrprovider.c
@@ -304,6 +304,9 @@ ProcRRSetProviderOutputSource(ClientPtr client)
pScrPriv->rrProviderSetOutputSource(pScreen, provider, source_provider);
+ provider->changed = TRUE;
+ RRSetChanged(pScreen);
+
RRTellChanged (pScreen);
return Success;
@@ -333,6 +336,9 @@ ProcRRSetProviderOffloadSink(ClientPtr client)
pScrPriv->rrProviderSetOffloadSink(pScreen, provider, sink_provider);
+ provider->changed = TRUE;
+ RRSetChanged(pScreen);
+
RRTellChanged (pScreen);
return Success;
@@ -357,6 +363,7 @@ RRProviderCreate(ScreenPtr pScreen, const char *name,
provider->nameLength = nameLength;
memcpy(provider->name, name, nameLength);
provider->name[nameLength] = '\0';
+ provider->changed = FALSE;
if (!AddResource (provider->id, RRProviderType, (pointer) provider))
return NULL;
@@ -416,3 +423,21 @@ RRProviderLookup(XID id, RRProviderPtr *provider_p)
return TRUE;
return FALSE;
}
+
+void
+RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider)
+{
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+
+ rrScrPriv(pScreen);
+
+ xRRProviderChangeNotifyEvent pe = {
+ .type = RRNotify + RREventBase,
+ .subCode = RRNotify_ProviderChange,
+ .timestamp = pScrPriv->lastSetTime.milliseconds,
+ .window = pWin->drawable.id,
+ .provider = provider->id
+ };
+
+ WriteEventsToClient(client, 1, (xEvent *) &pe);
+}
++++++ u_randr_send_rrresourcechangenotify_event.patch ++++++
>From 7fa3e6ac35602ba7025e9283e9b2a7ab21ab77fb Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb(a)suse.com>
Date: Fri, 4 Oct 2013 16:11:18 +0300
Subject: [PATCH] randr: send RRResourceChangeNotify event
Send RRResourceChangeNotify event when provider, output or crtc was created or
destroyed. I.e. when the list of resources returned by RRGetScreenResources and
RRGetProviders changes.
Reviewed-by: Dave Airlie <airlied(a)redhat.com>
Signed-off-by: Michal Srb <msrb(a)suse.com>
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
old mode 100644
new mode 100755
index e368dee..33b2b7d
--- a/hw/xfree86/common/xf86platformBus.c
+++ b/hw/xfree86/common/xf86platformBus.c
@@ -466,6 +466,9 @@ xf86platformAddDevice(int index)
/* attach unbound to 0 protocol screen */
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
+ RRResourcesChanged(xf86Screens[0]->pScreen);
+ RRTellChanged(xf86Screens[0]->pScreen);
+
return 0;
}
@@ -508,6 +511,8 @@ xf86platformRemoveDevice(int index)
xf86UnclaimPlatformSlot(&xf86_platform_devices[index], NULL);
xf86_remove_platform_device(index);
+
+ RRResourcesChanged(xf86Screens[0]->pScreen);
RRTellChanged(xf86Screens[0]->pScreen);
out:
return;
diff --git a/randr/randr.c b/randr/randr.c
index fa0a4da..9cec6f6 100755
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -420,6 +420,32 @@ RRExtensionInit(void)
#endif
}
+void
+RRResourcesChanged(ScreenPtr pScreen)
+{
+ rrScrPriv(pScreen);
+ pScrPriv->resourcesChanged = TRUE;
+
+ RRSetChanged(pScreen);
+}
+
+static void
+RRDeliverResourceEvent(ClientPtr client, WindowPtr pWin)
+{
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+
+ rrScrPriv(pScreen);
+
+ xRRResourceChangeNotifyEvent re = {
+ .type = RRNotify + RREventBase,
+ .subCode = RRNotify_ResourceChange,
+ .timestamp = pScrPriv->lastSetTime.milliseconds,
+ .window = pWin->drawable.id
+ };
+
+ WriteEventsToClient(client, 1, (xEvent *) &re);
+}
+
static int
TellChanged(WindowPtr pWin, pointer value)
{
@@ -480,6 +506,12 @@ TellChanged(WindowPtr pWin, pointer value)
RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider);
}
}
+
+ if (pRREvent->mask & RRResourceChangeNotifyMask) {
+ if (pScrPriv->resourcesChanged) {
+ RRDeliverResourceEvent(client, pWin);
+ }
+ }
}
return WT_WALKCHILDREN;
}
@@ -536,7 +568,11 @@ RRTellChanged(ScreenPtr pScreen)
}
pScrPriv->changed = FALSE;
mastersp->changed = FALSE;
+
WalkTree(master, TellChanged, (pointer) master);
+
+ mastersp->resourcesChanged = FALSE;
+
for (i = 0; i < pScrPriv->numOutputs; i++)
pScrPriv->outputs[i]->changed = FALSE;
for (i = 0; i < pScrPriv->numCrtcs; i++)
diff --git a/randr/randrstr.h b/randr/randrstr.h
index c933349..15299fd 100755
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -301,6 +301,7 @@ typedef struct _rrScrPriv {
Bool changed; /* some config changed */
Bool configChanged; /* configuration changed */
Bool layoutChanged; /* screen layout changed */
+ Bool resourcesChanged; /* screen resources change */
CARD16 minWidth, minHeight;
CARD16 maxWidth, maxHeight;
@@ -486,6 +487,9 @@ extern _X_EXPORT int
extern _X_EXPORT void
RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen);
+extern _X_EXPORT void
+ RRResourcesChanged(ScreenPtr pScreen);
+
/* randr.c */
/* set a screen change on the primary screen */
extern _X_EXPORT void
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
old mode 100644
new mode 100755
index 2f76b62..99b3dca
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
@@ -102,6 +102,8 @@ RRCrtcCreate(ScreenPtr pScreen, void *devPrivate)
crtc->pScreen = pScreen;
pScrPriv->crtcs[pScrPriv->numCrtcs++] = crtc;
+ RRResourcesChanged(pScreen);
+
return crtc;
}
@@ -669,6 +671,8 @@ RRCrtcDestroyResource(pointer value, XID pid)
break;
}
}
+
+ RRResourcesChanged(pScreen);
}
if (crtc->scanout_pixmap)
diff --git a/randr/rroutput.c b/randr/rroutput.c
old mode 100644
new mode 100755
index 922d61f..2b0b82f
--- a/randr/rroutput.c
+++ b/randr/rroutput.c
@@ -101,6 +101,9 @@ RROutputCreate(ScreenPtr pScreen,
return NULL;
pScrPriv->outputs[pScrPriv->numOutputs++] = output;
+
+ RRResourcesChanged(pScreen);
+
return output;
}
@@ -355,6 +358,8 @@ RROutputDestroyResource(pointer value, XID pid)
break;
}
}
+
+ RRResourcesChanged(pScreen);
}
if (output->modes) {
for (m = 0; m < output->numModes; m++)
++++++ u_vgaHW-no-legacy.patch ++++++
Author: Andreas Schwab <schwab(a)suse.de>
Subject: disable DACDelay on non-vga-hardware users
Patch-Mainline: To be upstreamed
Signed-Off-By: Marcus Meissner <meissner(a)suse.de>
--- hw/xfree86/vgahw/vgaHW.h
+++ hw/xfree86/vgahw/vgaHW.h
@@ -168,11 +168,15 @@ typedef struct _vgaHWRec {
#define BITS_PER_GUN 6
#define COLORMAP_SIZE 256
+#if defined(__powerpc__) || defined(__arm__) || defined(__s390__) || defined(__nds32__)
+#define DACDelay(hw) /* No legacy VGA support */
+#else
#define DACDelay(hw) \
do { \
(hw)->readST01((hw)); \
(hw)->readST01((hw)); \
} while (0)
+#endif
/* Function Prototypes */
++++++ u_xserver_xvfb-randr.patch ++++++
Author: Lambros Lambrou <lambroslambrou(a)google.com>
Subject: xvfb: add randr support
Patch-Mainline: To be upstreamed
References: bnc#823410 fdo#26391
Signed-off-by: Michal Srb <msrb(a)suse.cz>
--- a/hw/vfb/InitOutput.c
+++ b/hw/vfb/InitOutput.c
@@ -66,6 +66,7 @@
#include "dix.h"
#include "miline.h"
#include "glx_extinit.h"
+#include "randrstr.h"
#define VFB_DEFAULT_WIDTH 1280
#define VFB_DEFAULT_HEIGHT 1024
@@ -812,6 +813,165 @@
}
static Bool
+vfbRROutputValidateMode(ScreenPtr pScreen,
+ RROutputPtr output,
+ RRModePtr mode)
+{
+ rrScrPriv(pScreen);
+
+ if (pScrPriv->minWidth <= mode->mode.width &&
+ pScrPriv->maxWidth >= mode->mode.width &&
+ pScrPriv->minHeight <= mode->mode.height &&
+ pScrPriv->maxHeight >= mode->mode.height)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static Bool
+vfbRRScreenSetSize(ScreenPtr pScreen,
+ CARD16 width,
+ CARD16 height,
+ CARD32 mmWidth,
+ CARD32 mmHeight)
+{
+ WindowPtr root = pScreen->root;
+ WindowPtr layer;
+ WindowPtr child;
+ BoxRec box;
+
+ pScreen->width = width;
+ pScreen->height = height;
+ pScreen->mmWidth = mmWidth;
+ pScreen->mmHeight = mmHeight;
+
+ // Resize the root window & adjust its clipping
+ box.x1 = 0;
+ box.y1 = 0;
+ box.x2 = pScreen->width;
+ box.y2 = pScreen->height;
+ REGION_INIT(pScreen, &root->winSize, &box, 1);
+ REGION_INIT(pScreen, &root->borderSize, &box, 1);
+ REGION_RESET(pScreen, &root->borderClip, &box);
+ root->drawable.width = pScreen->width;
+ root->drawable.height = pScreen->height;
+ REGION_BREAK (pScreen, &root->clipList);
+
+ // Update the clipping regions of all windows
+ for (child = root->firstChild; child; child = child->nextSib)
+ (*pScreen->MarkOverlappedWindows)(child, child, &layer);
+
+ if (root->firstChild)
+ {
+ (*pScreen->MarkOverlappedWindows)(root->firstChild,
+ root->firstChild,
+ (WindowPtr *)NULL);
+ }
+ else
+ {
+ (*pScreen->MarkWindow) (root);
+ }
+
+ (*pScreen->ValidateTree)(root, NullWindow, VTOther);
+ (*pScreen->HandleExposures)(root);
+
+ // Reposition top-level windows to fit new root size
+ // XXX I assume this is what it does, but I'm not sure
+ ResizeChildrenWinSize (root, 0, 0, 0, 0);
+
+
+ // Check the pointer position
+ WindowsRestructured ();
+
+ RRScreenSizeNotify (pScreen);
+ RRTellChanged(pScreen);
+
+ // Flush resulting events, etc to clients
+ FlushAllOutput ();
+
+ return TRUE;
+}
+
+static Bool
+vfbRRCrtcSet(ScreenPtr pScreen,
+ RRCrtcPtr crtc,
+ RRModePtr mode,
+ int x,
+ int y,
+ Rotation rotation,
+ int numOutput,
+ RROutputPtr *outputs)
+{
+ return RRCrtcNotify(crtc, mode, x, y, rotation, NULL, numOutput, outputs);
+}
+
+static Bool
+vfbRRGetInfo(ScreenPtr pScreen, Rotation *rotations)
+{
+ return TRUE;
+}
+
+static Bool
+vfbRandRInit(ScreenPtr pScreen)
+{
+ rrScrPrivPtr pScrPriv;
+#if RANDR_12_INTERFACE
+ RRModePtr mode;
+ RRCrtcPtr crtc;
+ RROutputPtr output;
+ xRRModeInfo modeInfo;
+ char name[64];
+#endif
+
+ if (!RRScreenInit (pScreen))
+ return FALSE;
+ pScrPriv = rrGetScrPriv(pScreen);
+ pScrPriv->rrGetInfo = vfbRRGetInfo;
+#if RANDR_12_INTERFACE
+ pScrPriv->rrCrtcSet = vfbRRCrtcSet;
+ pScrPriv->rrScreenSetSize = vfbRRScreenSetSize;
+ pScrPriv->rrOutputSetProperty = NULL;
+#if RANDR_13_INTERFACE
+ pScrPriv->rrOutputGetProperty = NULL;
+#endif
+ pScrPriv->rrOutputValidateMode = vfbRROutputValidateMode;
+ pScrPriv->rrModeDestroy = NULL;
+
+ RRScreenSetSizeRange (pScreen,
+ 1, 1,
+ pScreen->width, pScreen->height);
+
+ sprintf (name, "%dx%d", pScreen->width, pScreen->height);
+ memset (&modeInfo, '\0', sizeof (modeInfo));
+ modeInfo.width = pScreen->width;
+ modeInfo.height = pScreen->height;
+ modeInfo.nameLength = strlen (name);
+
+ mode = RRModeGet (&modeInfo, name);
+ if (!mode)
+ return FALSE;
+
+ crtc = RRCrtcCreate (pScreen, NULL);
+ if (!crtc)
+ return FALSE;
+
+ output = RROutputCreate (pScreen, "screen", 6, NULL);
+ if (!output)
+ return FALSE;
+ if (!RROutputSetClones (output, NULL, 0))
+ return FALSE;
+ if (!RROutputSetModes (output, &mode, 1, 0))
+ return FALSE;
+ if (!RROutputSetCrtcs (output, &crtc, 1))
+ return FALSE;
+ if (!RROutputSetConnection (output, RR_Connected))
+ return FALSE;
+ RRCrtcNotify (crtc, mode, 0, 0, RR_Rotate_0, NULL, 1, &output);
+#endif
+ return TRUE;
+}
+
+static Bool
vfbScreenInit(ScreenPtr pScreen, int argc, char **argv)
{
vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];
@@ -885,6 +1045,9 @@
if (!ret)
return FALSE;
+ if (!vfbRandRInit(pScreen))
+ return FALSE;
+
pScreen->InstallColormap = vfbInstallColormap;
pScreen->UninstallColormap = vfbUninstallColormap;
pScreen->ListInstalledColormaps = vfbListInstalledColormaps;
++++++ xorg-backtrace ++++++
#!/usr/bin/perl
$version = "1.0";
$timeout = 5;
@pkgs = ( "xorg-x11-server", "xorg-x11-driver-video", "xorg-x11-driver-input",
"libpixman-1-0", "libpciaccess0" );
$xtracmds= "/etc/X11/xorg-backtrace-cmds";
$pid=$ARGV[0];
if ($pid == 0) {
print "Usage: $0 <pid>\n";
exit 1;
}
if (! -e "/usr/bin/gdb") {
print "Install gdb to get reasonable backtraces\n";
exit 2;
}
$SIG{ALRM} = sub { die "timeout starting gdb" };
alarm $timeout;
open STDERR, ">&STDOUT";
use FileHandle;
use IPC::Open2;
$gdb = open2 (*R, *W, "/usr/bin/gdb -n -p $pid");
$SIG{ALRM} = sub { kill QUIT, $gdb; sleep 1; kill KILL, $gdb; die "timeout using gdb" };
alarm $timeout;
print "\n==================== GDB Backtrace ============\n\n";
print "Done by $0 V$version\n\n";
$needpkgs=0;
for $p (@pkgs) {
next if system ("rpm", "-q", "--quiet", "$p-debuginfo") == 0 &&
system ("rpm", "-q", "--quiet", "$p-debugsource") == 0;
print "Install following debug packages to improve backtrace:\n" unless $needpkgs;
$needpkgs++;
print "\t$p-debug*\n";
}
print "\n" if $needpkgs;
print W "set prompt\necho \\n===info\\n\n";
#print W "info files\necho ===files\\n\n";
print W "thread apply all bt full\necho ===btend\\n\n";
$_=<R>; # GNU gdb version
print;
while (<R>) {
last if /^===info/;
print if /^This GDB was configured as/;
}
#print "\n==================== Files ====================\n\n";
#while (<R>) {
# last if /^===files/;
# print;
#}
print "\n==================== Backtrace ================\n";
$fno = "";
$fls = 0;
$o = "";
$use = 0;
while (<R>) {
last if /^===btend/;
if (/^#(\d+)\s/) {
$fno = $1;
$o .= "\n";
$o .= "===l".($fno-1)."\n" if $use;
$o .= "\n";
$fls = $fno+1 if /\bxorg_backtrace \(/ || /\bOsSigHandler \(/;
$use = 1;
}
$line{$fno} = $1 if $line{$fno} == 0 && /:(\d+)\s*$/;
$o .= $_;
$use = 0 if /^No symbol table info available/;
}
$o .="\n===l$fno";
for $i ($fls..$fno) {
print W "frame $i\necho ===fs$i\\n\nlist\necho ===fe$i\\n\n";
while (<R>) {
last if /^===fs$i\b/;
}
$r = "";
while (<R>) {
last if /^===fe$i\b/;
$r .= $_;
}
if ($line{$i} > 0) {
$r =~ s/^$line{$i}\b/$line{$i} */m;
}
$o =~ s/^===l$i$/$r/m;
}
if ($fls > 0) {
for $i (0..$fls-1) {
$o =~ s/^(#$i\s.*?)\n.*?\n#/$1\n\n#/ms;
}
}
$o =~ s/^===l.*$//mg;
print "$o";
if (-e $xtracmds) {
print W "source -v $xtracmds\necho ===cmds\\n\n";
print "\n==================== Extra Commands ===========\n\n";
while (<R>) {
last if /^===cmds/;
print unless /^\+echo ===cmds/;
}
}
print "\n==================== Backtrace End ============\n\n";
close R;
close W;
exit 0;
++++++ xorg-server-provides ++++++
Provides: X11_ABI_XINPUT = 19.1
Provides: X11_ABI_VIDEODRV = 14.1
Provides: X11_ABI_ANSIC = 0.4
Provides: X11_ABI_EXTENSION = 7.0
++++++ xorg-x11-server.macros.in ++++++
# RPM macros for XOrg ABI Definitions
# Add a Requires for the correct VIDEO Driver ABI
%x11_abi_videodrv_req \
Requires: X11_ABI_VIDEODRV = @abi_videodrv@
%x11_abi_xinput_req \
Requires: X11_ABI_XINPUT = @abi_xinput@
%x11_abi_ansic_req \
Requires: X11_ABI_ANSIC = @abi_ansic@
%x11_abi_extension_req \
Requires: X11_ABI_EXTENSION = @abi_extension@
1
0
Hello community,
here is the log from the commit of package xorg-x11-server for openSUSE:13.1:Update checked in at 2016-01-26 10:41:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.1:Update/xorg-x11-server (Old)
and /work/SRC/openSUSE:13.1:Update/.xorg-x11-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xorg-x11-server"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.yQJQoC/_old 2016-01-26 10:41:36.000000000 +0100
+++ /var/tmp/diff_new_pack.yQJQoC/_new 2016-01-26 10:41:36.000000000 +0100
@@ -1 +1 @@
-<link package='xorg-x11-server.4312' cicount='copy' />
+<link package='xorg-x11-server.370' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package perl-Image-ExifTool for openSUSE:Factory checked in at 2016-01-26 10:15:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Image-ExifTool (Old)
and /work/SRC/openSUSE:Factory/.perl-Image-ExifTool.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Image-ExifTool"
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Image-ExifTool/perl-Image-ExifTool.changes 2015-08-29 20:04:36.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.perl-Image-ExifTool.new/perl-Image-ExifTool.changes 2016-01-26 10:15:26.000000000 +0100
@@ -1,0 +2,116 @@
+Mon Jan 25 10:12:32 UTC 2016 - sor.alexei(a)meowr.ru
+
+- Update to 10.10 (changes since 10.00):
+ * Add a new Olympus CameraType.
+ * Add a new Canon LensType.
+ * Add a few new QuickTime GenreID values.
+ * Decode a new Pentax tag.
+ * Leica programmers should all be ashamed of the complete shambles
+ of metadata they have created.
+ * Minor change to the name of a Sigma lens for Canon.
+ * Improve recognition of Pentax lens adapter.
+ * Rename a few Sony tags and improved decoding of others.
+ * Rename a few Pentax tags.
+ * Fix problem importing structured information from -X option
+ output.
+ * Fix round-off errors in value and typo in name of
+ CanonVRD:GammaWhitePoint.
+ * Fix test failures if Encode, POSIX or Time::Local modules are
+ missing.
+ * Add ability to read PNG chunks after the normal PNG end of file
+ (IEND).
+ * Add ability to delete a PNG trailer (with -trailer:all=).
+ * Add some new Nikon LensID's.
+ * Add a few new Canon LensType's.
+ * Add a new Pentax LensType.
+ * Decode some new PanasonicRaw tags.
+ * Decode a new Pentax tag.
+ * Enhance -m option to allow IPTC values which are too short to
+ be written.
+ * Add support for JPEG 2000 extended-length boxes.
+ * Add a few new Canon LensType and CanonModelID values.
+ * Add a new Nikon LensID.
+ * Add ExifTool version number as a comment in -listx output.
+ * Add support for Leica SL (Typ 601) maker notes.
+ * Add a new Sony LensType.
+ * Decode more Sony tags for some new models.
+ * Decode a new Pentax tag.
+ * Patch for invalid makernote entry written by
+ Sony ILCE-7M2 v1.21.
+ * Patch problem reading EXE resources with a missing null
+ terminator.
+ * Add a few new Microsoft XMP tags.
+ * Enhance -r option to allow processing of directory names
+ beginning with ".".
+ * Avoid writing XMP-microsoft:LensModel unless specified
+ explicitly.
+ * Limit precision of area size in picasa_faces config file.
+ * Move Nikon NCDT GPS tags into the GPS group so they work with
+ the Composite GPS tags.
+ * Fix problem reading Ricoh RMETA information from some cameras.
+ * Add new Canon and Sony LensType values.
+ * Add some new Nikon LensID's.
+ * Add a new PentaxModelID.
+ * Add preliminary support for Motorola maker notes.
+ * Change format of XMP-photoshop:DocumentAncestors to write a
+ simple Bag of strings rather than structures (since this is
+ what the Adobe software writes, contrary to their own XMP
+ specification).
+ * Fix problem where HASH references may be exposed when copying a
+ list of structures to a non-list-type tag.
+ * Add a couple of new XMP-digiKam tags.
+ * Add a new CanonModelID.
+ * Add a new ACDSee XMP tag.
+ * Decode a new Canon tag.
+ * Improve a few lens names.
+ * Patch to remove trailing null when reading improperly written
+ QuickTime strings.
+ * Fix bug where SystemTags weren't available for use with the -p
+ and -if options.
+ * Fix problem with warnings on some systems about unimplemented
+ functions for FileGroupID and FileUserID when -p or -if were
+ used.
+ * Add ability to write empty XMP structures.
+ * Add write support for PhaseOne MakerNotes tags in IIQ files.
+ * Add a new Nikon LensID.
+ * Decode a new Olympus tag and improved decoding of DriveMode.
+ * Minor improvements to HtmlDump of PhaseOne IIQ and PDF files.
+ * Patch to allow overwriting of empty XMP written by some
+ PhaseOne cameras.
+ * Fix bug in HtmlDump feature that could cause a
+ "substr outside of string" error.
+ * Add ability to extract OS X system metadata ("MDItem" tags).
+ * Add a value conversion for GoogleTrackDuration.
+ * Enchance the -i option to allow full path names to be specified.
+ * Fix a potential runtime error when writing corrupted JPEG images.
+ * Add a new Olympus LensType.
+ * Add a couple of new Olympus FlashModel values.
+ * Add a new Nikon LensID.
+ * Add a new Pentax LensType.
+ * Decode a number of new Sony tags.
+ * Decode H264:DateTimeOriginal DST flag, and add " DST" to time
+ string if set.
+ * Decode a few more CanonCustom settings.
+ * Fix problem creating user-defined XMP structure elements with
+ names containing characters which are illegal in tag names.
+ * Improve mechanism for generating tags which must be
+ specifically requested when copying or used in -if or -p
+ expressions.
+ * Patch Composite:FileNumber to handle case where
+ Canon:FileNumber is 10000.
+ * Patch reading FujiFilm RawImageWidth/Height for new X-Pro2 RAF
+ images.
+ * Fix problem reading PDF objects which begin with a comment line.
+ * Fix problem which could result in ExifTool corrupting a PDF file
+ when writing.
+ * API Changes:
+ + add Filter option;
+ + change GetNewValues method name to GetNewValue (GetNewValues
+ still works for backward compatibility);
+ + change QuickTimeUTC API option to also enforce proper time
+ zero;
+ + add MDItemTags option;
+ + add RequestTags option;
+ + no longer generate MDItem tags when RequestAll option is set.
+
+-------------------------------------------------------------------
Old:
----
Image-ExifTool-10.00.tar.gz
New:
----
Image-ExifTool-10.10.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Image-ExifTool.spec ++++++
--- /var/tmp/diff_new_pack.VIphUz/_old 2016-01-26 10:15:27.000000000 +0100
+++ /var/tmp/diff_new_pack.VIphUz/_new 2016-01-26 10:15:27.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package perl-Image-ExifTool
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%define cpan_name Image-ExifTool
Name: perl-Image-ExifTool
-Version: 10.00
+Version: 10.10
Release: 0
Summary: Perl module to read and write meta information
License: GPL-1.0+ or Artistic-1.0
++++++ Image-ExifTool-10.00.tar.gz -> Image-ExifTool-10.10.tar.gz ++++++
++++ 28229 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-ldap for openSUSE:Factory checked in at 2016-01-26 10:15:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ldap (Old)
and /work/SRC/openSUSE:Factory/.python-ldap.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ldap"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ldap/python-ldap.changes 2015-10-25 14:18:18.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-ldap.new/python-ldap.changes 2016-01-26 10:15:28.000000000 +0100
@@ -1,0 +2,5 @@
+Mon Jan 18 15:20:02 UTC 2016 - michael(a)stroeder.com
+
+- Update to upstream release 2.4.25
+
+-------------------------------------------------------------------
Old:
----
python-ldap-2.4.22.tar.gz
New:
----
python-ldap-2.4.25.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ldap.spec ++++++
--- /var/tmp/diff_new_pack.1ND6Ll/_old 2016-01-26 10:15:28.000000000 +0100
+++ /var/tmp/diff_new_pack.1ND6Ll/_new 2016-01-26 10:15:28.000000000 +0100
@@ -17,7 +17,7 @@
Name: python-ldap
-Version: 2.4.22
+Version: 2.4.25
Release: 0
Summary: Python LDAP interface
License: Python-2.0
++++++ python-ldap-2.4.22.tar.gz -> python-ldap-2.4.25.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-2.4.22/CHANGES new/python-ldap-2.4.25/CHANGES
--- old/python-ldap-2.4.22/CHANGES 2015-10-24 17:57:13.000000000 +0200
+++ new/python-ldap-2.4.25/CHANGES 2016-01-18 16:16:29.000000000 +0100
@@ -1,4 +1,23 @@
----------------------------------------------------------------
+Released 2.4.25 2016-01-18
+
+Changes since 2.4.23:
+(2.4.24 is missing because of foolish pypi version madness)
+
+Lib/
+* Fix for attrlist=None regression introduced in 2.4.23
+ by ref count patch
+
+----------------------------------------------------------------
+Released 2.4.23 2016-01-17
+
+Changes since 2.4.22:
+
+Modules/
+* Ref count issue in attrs_from_List() was fixed
+ (thanks to Elmir Jagudin)
+
+----------------------------------------------------------------
Released 2.4.22 2015-10-25
Changes since 2.4.21:
@@ -12,9 +31,9 @@
* Hmmpf! Added missing self to LDAPObject.fileno().
* ReconnectLDAPObject.sasl_bind_s() now correctly uses
generic wrapper arguments *args,**kwargs
-* LDIFParser.parse_change_records() now correctly calls
- LDIFParser.handle_change_modify()
-* Corrected ldap.controls.pwdpolicy.__all__
+* Correct method name LDIFParser.handle_modify()
+* Corrected __all__ in modules ldap.controls.pwdpolicy and
+ ldap.controls.openldap
Doc/
* Started missing docs for sub-module ldap.sasl.
@@ -1216,4 +1235,4 @@
----------------------------------------------------------------
Released 1.10alpha3 2000-09-19
-$Id: CHANGES,v 1.363 2015/10/24 15:55:07 stroeder Exp $
+$Id: CHANGES,v 1.370 2016/01/18 15:16:29 stroeder Exp $
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-2.4.22/Lib/dsml.py new/python-ldap-2.4.25/Lib/dsml.py
--- old/python-ldap-2.4.22/Lib/dsml.py 2015-10-24 17:57:14.000000000 +0200
+++ new/python-ldap-2.4.25/Lib/dsml.py 2016-01-18 16:16:29.000000000 +0100
@@ -4,13 +4,13 @@
See http://www.python-ldap.org/ for details.
-$Id: dsml.py,v 1.39 2015/09/30 17:15:53 stroeder Exp $
+$Id: dsml.py,v 1.42 2016/01/18 15:16:29 stroeder Exp $
Python compability note:
Tested with Python 2.0+.
"""
-__version__ = '2.4.22'
+__version__ = '2.4.25'
import string,base64
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-2.4.22/Lib/ldap/__init__.py new/python-ldap-2.4.25/Lib/ldap/__init__.py
--- old/python-ldap-2.4.22/Lib/ldap/__init__.py 2015-10-24 17:57:14.000000000 +0200
+++ new/python-ldap-2.4.25/Lib/ldap/__init__.py 2016-01-18 16:17:30.000000000 +0100
@@ -3,12 +3,12 @@
See http://www.python-ldap.org/ for details.
-$Id: __init__.py,v 1.99 2015/09/30 17:15:53 stroeder Exp $
+$Id: __init__.py,v 1.102 2016/01/18 15:17:30 stroeder Exp $
"""
# This is also the overall release version number
-__version__ = '2.4.22'
+__version__ = '2.4.25'
import sys
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-2.4.22/Lib/ldap/ldapobject.py new/python-ldap-2.4.25/Lib/ldap/ldapobject.py
--- old/python-ldap-2.4.22/Lib/ldap/ldapobject.py 2015-10-24 17:57:14.000000000 +0200
+++ new/python-ldap-2.4.25/Lib/ldap/ldapobject.py 2016-01-18 13:32:34.000000000 +0100
@@ -3,7 +3,7 @@
See http://www.python-ldap.org/ for details.
-\$Id: ldapobject.py,v 1.149 2015/10/24 15:46:12 stroeder Exp $
+\$Id: ldapobject.py,v 1.151 2016/01/18 10:38:26 stroeder Exp $
Compability:
- Tested with Python 2.0+ but should work with Python 1.5.x
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-2.4.22/Lib/ldapurl.py new/python-ldap-2.4.25/Lib/ldapurl.py
--- old/python-ldap-2.4.22/Lib/ldapurl.py 2015-10-24 17:57:14.000000000 +0200
+++ new/python-ldap-2.4.25/Lib/ldapurl.py 2016-01-18 16:16:29.000000000 +0100
@@ -3,7 +3,7 @@
See http://www.python-ldap.org/ for details.
-\$Id: ldapurl.py,v 1.74 2015/09/30 17:15:53 stroeder Exp $
+\$Id: ldapurl.py,v 1.77 2016/01/18 15:16:29 stroeder Exp $
Python compability note:
This module only works with Python 2.0+ since
@@ -11,7 +11,7 @@
2. list comprehensions are used.
"""
-__version__ = '2.4.22'
+__version__ = '2.4.25'
__all__ = [
# constants
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-2.4.22/Lib/ldif.py new/python-ldap-2.4.25/Lib/ldif.py
--- old/python-ldap-2.4.22/Lib/ldif.py 2015-10-24 18:12:31.000000000 +0200
+++ new/python-ldap-2.4.25/Lib/ldif.py 2016-01-18 16:16:29.000000000 +0100
@@ -3,13 +3,13 @@
See http://www.python-ldap.org/ for details.
-$Id: ldif.py,v 1.87 2015/10/24 16:12:31 stroeder Exp $
+$Id: ldif.py,v 1.90 2016/01/18 15:16:29 stroeder Exp $
Python compability note:
Tested with Python 2.0+, but should work with Python 1.5.2+.
"""
-__version__ = '2.4.22'
+__version__ = '2.4.25'
__all__ = [
# constants
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-2.4.22/Lib/python_ldap.egg-info/PKG-INFO new/python-ldap-2.4.25/Lib/python_ldap.egg-info/PKG-INFO
--- old/python-ldap-2.4.22/Lib/python_ldap.egg-info/PKG-INFO 2015-10-24 18:26:45.000000000 +0200
+++ new/python-ldap-2.4.25/Lib/python_ldap.egg-info/PKG-INFO 2016-01-18 16:18:23.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: python-ldap
-Version: 2.4.22
+Version: 2.4.25
Summary: Python modules for implementing LDAP clients
Home-page: http://www.python-ldap.org/
Author: python-ldap project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-2.4.22/Modules/LDAPObject.c new/python-ldap-2.4.25/Modules/LDAPObject.c
--- old/python-ldap-2.4.22/Modules/LDAPObject.c 2015-06-05 23:34:52.000000000 +0200
+++ new/python-ldap-2.4.25/Modules/LDAPObject.c 2016-01-18 13:33:13.000000000 +0100
@@ -1,5 +1,5 @@
/* See http://www.python-ldap.org/ for details.
- * $Id: LDAPObject.c,v 1.91 2015/05/02 16:19:23 stroeder Exp $ */
+ * $Id: LDAPObject.c,v 1.93 2016/01/18 12:33:07 stroeder Exp $ */
#include "common.h"
#include "patchlevel.h"
@@ -18,7 +18,7 @@
#include <sasl.h>
#endif
-static void free_attrs(char***);
+static void free_attrs(char***, PyObject*);
/* constructor */
@@ -252,16 +252,17 @@
/*
* convert a python list of strings into an attr list (char*[]).
* returns 1 if successful, 0 if not (with exception set)
- * XXX the strings should live longer than the resulting attrs pointer.
*/
int
-attrs_from_List( PyObject *attrlist, char***attrsp ) {
+attrs_from_List( PyObject *attrlist, char***attrsp, PyObject** seq) {
char **attrs = NULL;
Py_ssize_t i, len;
PyObject *item;
+ *seq = NULL;
+
if (attrlist == Py_None) {
/* None means a NULL attrlist */
} else if (PyString_Check(attrlist)) {
@@ -269,31 +270,30 @@
PyErr_SetObject( PyExc_TypeError, Py_BuildValue("sO",
"expected *list* of strings, not a string", attrlist ));
goto error;
- } else if (PySequence_Check(attrlist)) {
+ } else {
+ *seq = PySequence_Fast(attrlist, "expected list of strings or None");
+ if (*seq == NULL)
+ goto error;
+
len = PySequence_Length(attrlist);
+
attrs = PyMem_NEW(char *, len + 1);
if (attrs == NULL)
- goto nomem;
+ goto nomem;
for (i = 0; i < len; i++) {
attrs[i] = NULL;
- item = PySequence_GetItem(attrlist, i);
+ item = PySequence_Fast_GET_ITEM(*seq, i);
if (item == NULL)
goto error;
if (!PyString_Check(item)) {
PyErr_SetObject(PyExc_TypeError, Py_BuildValue("sO",
"expected string in list", item));
- Py_DECREF(item);
goto error;
}
attrs[i] = PyString_AsString(item);
- Py_DECREF(item);
}
attrs[len] = NULL;
- } else {
- PyErr_SetObject( PyExc_TypeError, Py_BuildValue("sO",
- "expected list of strings or None", attrlist ));
- goto error;
}
*attrsp = attrs;
@@ -302,20 +302,22 @@
nomem:
PyErr_NoMemory();
error:
- free_attrs(&attrs);
+ free_attrs(&attrs, *seq);
return 0;
}
/* free memory allocated from above routine */
static void
-free_attrs( char*** attrsp ) {
+free_attrs( char*** attrsp, PyObject* seq ) {
char **attrs = *attrsp;
if (attrs != NULL) {
PyMem_DEL(attrs);
*attrsp = NULL;
}
+
+ Py_XDECREF(seq);
}
/*------------------------------------------------------------
@@ -1107,6 +1109,7 @@
PyObject *serverctrls = Py_None;
PyObject *clientctrls = Py_None;
+ PyObject *attrs_seq = NULL;
LDAPControl** server_ldcs = NULL;
LDAPControl** client_ldcs = NULL;
@@ -1124,7 +1127,7 @@
&serverctrls, &clientctrls, &timeout, &sizelimit )) return NULL;
if (not_valid(self)) return NULL;
- if (!attrs_from_List( attrlist, &attrs ))
+ if (!attrs_from_List( attrlist, &attrs, &attrs_seq ))
return NULL;
if (timeout >= 0) {
@@ -1149,7 +1152,7 @@
server_ldcs, client_ldcs, tvp, sizelimit, &msgid );
LDAP_END_ALLOW_THREADS( self );
- free_attrs( &attrs );
+ free_attrs( &attrs, attrs_seq);
LDAPControl_List_DEL( server_ldcs );
LDAPControl_List_DEL( client_ldcs );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-2.4.22/PKG-INFO new/python-ldap-2.4.25/PKG-INFO
--- old/python-ldap-2.4.22/PKG-INFO 2015-10-24 18:26:45.000000000 +0200
+++ new/python-ldap-2.4.25/PKG-INFO 2016-01-18 16:18:23.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: python-ldap
-Version: 2.4.22
+Version: 2.4.25
Summary: Python modules for implementing LDAP clients
Home-page: http://www.python-ldap.org/
Author: python-ldap project
1
0
Hello community,
here is the log from the commit of package claws-mail for openSUSE:Factory checked in at 2016-01-26 10:15:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/claws-mail (Old)
and /work/SRC/openSUSE:Factory/.claws-mail.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "claws-mail"
Changes:
--------
--- /work/SRC/openSUSE:Factory/claws-mail/claws-mail.changes 2015-12-23 08:50:46.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.claws-mail.new/claws-mail.changes 2016-01-26 10:15:22.000000000 +0100
@@ -1,0 +2,7 @@
+Fri Jan 22 21:50:19 UTC 2016 - kieltux(a)gmail.com
+
+- Update to version 3.13.2 (CVE-2015-8708):
+ + Bugs fixed: claws#2358, claws#3557, claws#3584.
+ + Updated translations.
+
+-------------------------------------------------------------------
Old:
----
claws-mail-3.13.1.tar.xz
New:
----
claws-mail-3.13.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ claws-mail.spec ++++++
--- /var/tmp/diff_new_pack.up7loy/_old 2016-01-26 10:15:23.000000000 +0100
+++ /var/tmp/diff_new_pack.up7loy/_new 2016-01-26 10:15:23.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package claws-mail
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -22,15 +22,13 @@
%endif
Name: claws-mail
-Version: 3.13.1
+Version: 3.13.2
Release: 0
Url: http://www.claws-mail.org/
Summary: A lightweight and highly configurable email client
License: GPL-3.0+
Group: Productivity/Networking/Email/Clients
-# Both sourceforge and project url fails, so just have source manually.
-#Source: http://www.claws-mail.org/download.php?file=releases/claws-mail-3.13.0.tar.…
-Source0: claws-mail-%{version}.tar.xz
+Source: http://www.claws-mail.org/download.php?file=releases/%{name}-%{version}.tar…
BuildRequires: NetworkManager-devel
BuildRequires: compface
BuildRequires: db-devel
++++++ claws-mail-3.13.1.tar.xz -> claws-mail-3.13.2.tar.xz ++++++
++++ 14472 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package nss_wrapper for openSUSE:Factory checked in at 2016-01-26 10:15:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nss_wrapper (Old)
and /work/SRC/openSUSE:Factory/.nss_wrapper.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nss_wrapper"
Changes:
--------
--- /work/SRC/openSUSE:Factory/nss_wrapper/nss_wrapper.changes 2015-11-22 11:02:57.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.nss_wrapper.new/nss_wrapper.changes 2016-01-26 10:15:21.000000000 +0100
@@ -1,0 +2,9 @@
+Thu Jan 14 08:34:11 UTC 2016 - asn(a)cryptomilk.org
+
+- Update to version 1.1.2
+ * Fixed segfault while reloading hosts file
+ * Fixed issue where are not fault tolerant if an alias has already
+ been added
+ * Fixed nss_wrapper build on Solaris
+
+-------------------------------------------------------------------
Old:
----
nss_wrapper-1.1.0.tar.gz
New:
----
nss_wrapper-1.1.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nss_wrapper.spec ++++++
--- /var/tmp/diff_new_pack.rkxFqn/_old 2016-01-26 10:15:22.000000000 +0100
+++ /var/tmp/diff_new_pack.rkxFqn/_new 2016-01-26 10:15:22.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package nss_wrapper
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -24,7 +24,7 @@
############################# NOTE ##################################
Name: nss_wrapper
-Version: 1.1.0
+Version: 1.1.2
Release: 0
Summary: A wrapper for the user, group and hosts NSS API
++++++ nss_wrapper-1.1.0.tar.gz -> nss_wrapper-1.1.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nss_wrapper-1.1.0/CMakeLists.txt new/nss_wrapper-1.1.2/CMakeLists.txt
--- old/nss_wrapper-1.1.0/CMakeLists.txt 2015-11-20 12:14:16.000000000 +0100
+++ new/nss_wrapper-1.1.2/CMakeLists.txt 2015-12-17 08:57:54.000000000 +0100
@@ -8,7 +8,7 @@
set(APPLICATION_VERSION_MAJOR "1")
set(APPLICATION_VERSION_MINOR "1")
-set(APPLICATION_VERSION_PATCH "0")
+set(APPLICATION_VERSION_PATCH "2")
set(APPLICATION_VERSION "${APPLICATION_VERSION_MAJOR}.${APPLICATION_VERSION_MINOR}.${APPLICATION_VERSION_PATCH}")
@@ -19,7 +19,7 @@
# Increment AGE. Set REVISION to 0
# If the source code was changed, but there were no interface changes:
# Increment REVISION.
-set(LIBRARY_VERSION "0.2.0")
+set(LIBRARY_VERSION "0.2.2")
set(LIBRARY_SOVERSION "0")
# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nss_wrapper-1.1.0/ChangeLog new/nss_wrapper-1.1.2/ChangeLog
--- old/nss_wrapper-1.1.0/ChangeLog 2015-11-20 12:14:16.000000000 +0100
+++ new/nss_wrapper-1.1.2/ChangeLog 2015-12-17 09:00:25.000000000 +0100
@@ -1,6 +1,14 @@
ChangeLog
==========
+version 1.1.2 (released 2015-12-17)
+ * Fixed segfault while reloading hosts file
+ * Fixed issue where are not fault tolerant if an alias has already
+ been added
+
+version 1.1.1 (released 2015-11-23)
+ * Fixed nss_wrapper build on Solaris
+
version 1.1.0 (released 2015-11-20)
* Added support for initgroups()
* Added support for shadow files (getspnam(), etc.)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nss_wrapper-1.1.0/src/nss_wrapper.c new/nss_wrapper-1.1.2/src/nss_wrapper.c
--- old/nss_wrapper-1.1.0/src/nss_wrapper.c 2015-11-20 10:00:56.000000000 +0100
+++ new/nss_wrapper-1.1.2/src/nss_wrapper.c 2015-12-17 09:14:13.000000000 +0100
@@ -2622,12 +2622,14 @@
for (cursor = el; cursor->next != NULL; cursor = cursor->next)
{
if (cursor->ed == ed) {
- return false;
+ /* The entry already exists in this list. */
+ return true;
}
}
if (cursor->ed == ed) {
- return false;
+ /* The entry already exists in this list. */
+ return true;
}
el_new = nwrap_entlist_init(ed);
@@ -2888,6 +2890,7 @@
struct nwrap_entdata *ed;
struct nwrap_entlist *el;
size_t i;
+ int rc;
nwrap_vector_foreach (ed, nwrap_he->entries, i)
{
@@ -2913,6 +2916,18 @@
nwrap_he->num = 0;
nwrap_he->idx = 0;
+
+ /*
+ * If we unload the file, the pointers in the hash table point to
+ * invalid memory. So we need to destroy the hash table and recreate
+ * it.
+ */
+ hdestroy();
+ rc = hcreate(max_hostents);
+ if (rc == 0) {
+ NWRAP_LOG(NWRAP_LOG_ERROR, "Failed to initialize hash table");
+ exit(-1);
+ }
}
@@ -5578,7 +5593,9 @@
}
free(user_addrlist.items);
+#ifdef HAVE_GETHOSTBYNAME2
free(user_addrlist2.items);
+#endif
hdestroy();
NWRAP_UNLOCK_ALL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nss_wrapper-1.1.0/tests/hosts.in new/nss_wrapper-1.1.2/tests/hosts.in
--- old/nss_wrapper-1.1.0/tests/hosts.in 2015-11-13 13:17:02.000000000 +0100
+++ new/nss_wrapper-1.1.2/tests/hosts.in 2015-12-17 08:30:50.000000000 +0100
@@ -5,7 +5,7 @@
::13 beteigeuze.galaxy.site beteigeuze mail
127.0.0.14 krikkit.galaxy.site
::14 krikkit.galaxy.site
-127.1.1.1 pumpkin.bunny.net
+127.1.1.1 pumpkin.bunny.net pumpkin.bunny.net
127.0.0.66 pumpkin.bunny.net
2666::22 pumpkin.bunny.net
DEAD:BEEF:1:2:3::4 pumpkin.bunny.net
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nss_wrapper-1.1.0/tests/test_getaddrinfo.c new/nss_wrapper-1.1.2/tests/test_getaddrinfo.c
--- old/nss_wrapper-1.1.0/tests/test_getaddrinfo.c 2015-11-19 09:39:46.000000000 +0100
+++ new/nss_wrapper-1.1.2/tests/test_getaddrinfo.c 2015-12-17 09:14:14.000000000 +0100
@@ -5,8 +5,10 @@
#include <setjmp.h>
#include <cmocka.h>
+#include <errno.h>
#include <stdio.h>
#include <string.h>
+#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
@@ -83,6 +85,54 @@
freeaddrinfo(res);
}
+/*
+ * The purpose of this test is to verify that reloading of the hosts
+ * file (triggered by a timestamp change) correctly frees and re-creates
+ * the internal data structures, so we do not end up using invalid memory.
+ */
+static void test_nwrap_getaddrinfo_reload(void **state)
+{
+ struct addrinfo hints;
+ struct addrinfo *res = NULL;
+ const char *env;
+ char touch_cmd[1024];
+ int rc;
+
+ (void) state; /* unused */
+
+ /* IPv4 */
+ memset(&hints, 0, sizeof(struct addrinfo));
+ hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */
+ hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */
+ hints.ai_flags = AI_PASSIVE; /* For wildcard IP address */
+ hints.ai_protocol = 0; /* Any protocol */
+ hints.ai_canonname = NULL;
+ hints.ai_addr = NULL;
+ hints.ai_next = NULL;
+
+ rc = getaddrinfo("127.0.0.11", NULL, &hints, &res);
+ assert_int_equal(rc, 0);
+ assert_non_null(res);
+
+ freeaddrinfo(res);
+ res = NULL;
+
+ env = getenv("NSS_WRAPPER_HOSTS");
+ assert_non_null(env);
+
+ snprintf(touch_cmd, sizeof(touch_cmd), "touch %s", env);
+
+ rc = system(touch_cmd);
+ assert_return_code(rc, errno);
+
+ rc = getaddrinfo("127.0.0.11", NULL, &hints, &res);
+ assert_int_equal(rc, 0);
+ assert_non_null(res);
+
+
+ freeaddrinfo(res);
+}
+
static void test_nwrap_getaddrinfo_samba(void **state)
{
struct addrinfo hints;
@@ -661,6 +711,7 @@
const struct CMUnitTest tests[] = {
cmocka_unit_test(test_nwrap_getaddrinfo),
+ cmocka_unit_test(test_nwrap_getaddrinfo_reload),
cmocka_unit_test(test_nwrap_getaddrinfo_any),
cmocka_unit_test(test_nwrap_getaddrinfo_local),
cmocka_unit_test(test_nwrap_getaddrinfo_name),
1
0
Hello community,
here is the log from the commit of package python3-pylint for openSUSE:Factory checked in at 2016-01-26 10:15:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-pylint (Old)
and /work/SRC/openSUSE:Factory/.python3-pylint.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-pylint"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-pylint/python3-pylint.changes 2016-01-22 01:07:00.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-pylint.new/python3-pylint.changes 2016-01-26 10:15:20.000000000 +0100
@@ -1,0 +2,10 @@
+Sun Jan 17 00:03:04 UTC 2016 - arun(a)gmx.de
+
+- update to version 1.5.4:
+ * Merge StringMethodChecker with StringFormatChecker. This fixes a
+ bug where disabling all the messages and enabling only a handful of
+ messages from the StringFormatChecker would have resulted in no
+ messages at all.
+ * Don't apply unneeded-not over sets.
+
+-------------------------------------------------------------------
Old:
----
pylint-1.5.3.tar.gz
New:
----
pylint-1.5.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-pylint.spec ++++++
--- /var/tmp/diff_new_pack.8vJoPX/_old 2016-01-26 10:15:21.000000000 +0100
+++ /var/tmp/diff_new_pack.8vJoPX/_new 2016-01-26 10:15:21.000000000 +0100
@@ -17,7 +17,7 @@
Name: python3-pylint
-Version: 1.5.3
+Version: 1.5.4
Release: 0
Summary: Syntax and style checker for Python code
License: GPL-2.0+
++++++ pylint-1.5.3.tar.gz -> pylint-1.5.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/ChangeLog new/pylint-1.5.4/ChangeLog
--- old/pylint-1.5.3/ChangeLog 2016-01-11 10:51:49.000000000 +0100
+++ new/pylint-1.5.4/ChangeLog 2016-01-15 21:26:34.000000000 +0100
@@ -1,6 +1,17 @@
ChangeLog for Pylint
--------------------
+
+2016-01-15 -- 1.5.4
+
+ * Merge StringMethodChecker with StringFormatChecker. This fixes a
+ bug where disabling all the messages and enabling only a handful of
+ messages from the StringFormatChecker would have resulted in no
+ messages at all.
+
+ * Don't apply unneeded-not over sets.
+
+
2016-01-11 -- 1.5.3
* Handle the import fallback idiom with regard to wrong-import-order.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/PKG-INFO new/pylint-1.5.4/PKG-INFO
--- old/pylint-1.5.3/PKG-INFO 2016-01-11 11:07:57.000000000 +0100
+++ new/pylint-1.5.4/PKG-INFO 2016-01-15 21:32:52.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pylint
-Version: 1.5.3
+Version: 1.5.4
Summary: python code static checker
Home-page: http://www.pylint.org
Author: Logilab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/pylint/__pkginfo__.py new/pylint-1.5.4/pylint/__pkginfo__.py
--- old/pylint-1.5.3/pylint/__pkginfo__.py 2016-01-11 10:51:17.000000000 +0100
+++ new/pylint-1.5.4/pylint/__pkginfo__.py 2016-01-15 21:26:42.000000000 +0100
@@ -23,7 +23,7 @@
modname = distname = 'pylint'
-numversion = (1, 5, 3)
+numversion = (1, 5, 4)
version = '.'.join([str(num) for num in numversion])
install_requires = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/pylint/checkers/base.py new/pylint-1.5.4/pylint/checkers/base.py
--- old/pylint-1.5.3/pylint/checkers/base.py 2016-01-09 21:13:05.000000000 +0100
+++ new/pylint-1.5.4/pylint/checkers/base.py 2016-01-15 20:56:43.000000000 +0100
@@ -197,6 +197,12 @@
return 'method'
+def _is_none(node):
+ return (node is None or
+ (isinstance(node, astroid.Const) and node.value is None) or
+ (isinstance(node, astroid.Name) and node.name == 'None')
+ )
+
def _has_abstract_methods(node):
"""
@@ -264,6 +270,28 @@
return True
return False
+
+def _node_type(node):
+ """Return the inferred type for `node`
+
+ If there is more than one possible type, or if inferred type is YES or None,
+ return None
+ """
+ # check there is only one possible type for the assign node. Else we
+ # don't handle it for now
+ types = set()
+ try:
+ for var_type in node.infer():
+ if var_type == astroid.YES or _is_none(var_type):
+ continue
+ types.add(var_type)
+ if len(types) > 1:
+ return
+ except InferenceError:
+ return
+ return types.pop() if types else None
+
+
class _BasicChecker(BaseChecker):
__implements__ = IAstroidChecker
name = 'basic'
@@ -397,11 +425,7 @@
else:
values = [r.value for r in returns]
# Are we returning anything but None from constructors
- if [v for v in values
- if not (v is None or
- (isinstance(v, astroid.Const) and v.value is None) or
- (isinstance(v, astroid.Name) and v.name == 'None')
- )]:
+ if [v for v in values if not _is_none(v)]:
self.add_message('return-in-init', node=node)
elif node.is_generator():
# make sure we don't mix non-None returns and yields
@@ -1794,7 +1818,7 @@
def visit_comprehension(self, node):
self._if_counter += len(node.ifs)
- @check_messages('too-many-nested-blocks')
+ @check_messages('too-many-nested-blocks', 'simplifiable-if-statement')
def visit_if(self, node):
self._check_simplifiable_if(node)
self._check_nested_blocks(node)
@@ -1862,6 +1886,12 @@
reverse_op = {'<': '>=', '<=': '>', '>': '<=', '>=': '<', '==': '!=',
'!=': '==', 'in': 'not in', 'is': 'is not'}
+ # sets are not ordered, so for example "not set(LEFT_VALS) <= set(RIGHT_VALS)" is
+ # not equivalent to "set(LEFT_VALS) > set(RIGHT_VALS)"
+ skipped_nodes = (astroid.Set, )
+ # 'builtins' py3, '__builtin__' py2
+ skipped_classnames = ['%s.%s' % (six.moves.builtins.__name__, qname)
+ for qname in ('set', 'frozenset')]
@check_messages('unneeded-not')
def visit_unaryop(self, node):
@@ -1881,12 +1911,18 @@
operator, right = operand.ops[0]
if operator not in self.reverse_op:
return
-
# Ignore __ne__ as function of __eq__
frame = node.frame()
if frame.name == '__ne__' and operator == '==':
return
-
+ for _type in (_node_type(left), _node_type(right)):
+ if not _type:
+ return
+ if isinstance(_type, self.skipped_nodes):
+ return
+ if (isinstance(_type, astroid.Instance) and
+ _type.qname() in self.skipped_classnames):
+ return
suggestion = '%s %s %s' % (left.as_string(),
self.reverse_op[operator],
right.as_string())
@@ -1951,23 +1987,12 @@
if isinstance(target, (astroid.Tuple, astroid.Subscript)):
return
# ignore NoneType
- if node.value.as_string() == 'None':
- return
- # check there is only one possible type for the assign node. Else we
- # don't handle it for now
- types = set()
- try:
- for var_type in node.value.infer():
- if var_type == astroid.YES or var_type.as_string() == 'None':
- continue
- var_type = var_type.pytype()
- types.add(var_type)
- if len(types) > 1:
- return
- except InferenceError:
+ if _is_none(node):
return
- if types:
- self._assigns[-1].setdefault(target.as_string(), []).append((node, types.pop()))
+ _type = _node_type(node.value)
+ if _type:
+ self._assigns[-1].setdefault(target.as_string(), []).append(
+ (node, _type.pytype()))
def register(linter):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/pylint/checkers/classes.py new/pylint-1.5.4/pylint/checkers/classes.py
--- old/pylint-1.5.3/pylint/checkers/classes.py 2016-01-09 21:13:05.000000000 +0100
+++ new/pylint-1.5.4/pylint/checkers/classes.py 2016-01-15 16:54:29.000000000 +0100
@@ -348,6 +348,11 @@
self._first_attrs = []
self._meth_could_be_func = None
+ @check_messages('no-init', 'invalid-slots', 'inherit-non-class',
+ 'inconsistent-mro', 'duplicate-bases',
+ 'invalid-slots', 'invalid-slots-object', 'abstract-method',
+ 'access-member-before-definition',
+ 'attribute-defined-outside-init')
def visit_classdef(self, node):
"""init visit variable _accessed
"""
@@ -363,7 +368,6 @@
self._check_proper_bases(node)
self._check_consistent_mro(node)
- @check_messages('inconsistent-mro', 'duplicate-bases')
def _check_consistent_mro(self, node):
"""Detect that a class has a consistent mro or duplicate bases."""
try:
@@ -376,7 +380,6 @@
# Old style class, there's no mro so don't do anything.
pass
- @check_messages('inherit-non-class')
def _check_proper_bases(self, node):
"""
Detect that a class inherits something which is not
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/pylint/checkers/exceptions.py new/pylint-1.5.4/pylint/checkers/exceptions.py
--- old/pylint-1.5.3/pylint/checkers/exceptions.py 2015-12-24 17:12:25.000000000 +0100
+++ new/pylint-1.5.4/pylint/checkers/exceptions.py 2016-01-15 15:00:42.000000000 +0100
@@ -307,7 +307,7 @@
@check_messages('bare-except', 'broad-except',
'binary-op-exception', 'bad-except-order',
- 'catching-non-exception')
+ 'catching-non-exception', 'duplicate-except')
def visit_tryexcept(self, node):
"""check for empty except"""
exceptions_classes = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/pylint/checkers/strings.py new/pylint-1.5.4/pylint/checkers/strings.py
--- old/pylint-1.5.3/pylint/checkers/strings.py 2015-12-24 17:12:25.000000000 +0100
+++ new/pylint-1.5.4/pylint/checkers/strings.py 2016-01-13 15:25:49.000000000 +0100
@@ -76,7 +76,10 @@
"too-few-format-args",
"Used when a format string that uses unnamed conversion \
specifiers is given too few arguments"),
-
+ 'E1310': ("Suspicious argument in %s.%s call",
+ "bad-str-strip-call",
+ "The argument to a str.{l,r,}strip call contains a"
+ " duplicate character, "),
'W1302': ("Invalid format string",
"bad-format-string",
"Used when a PEP 3101 format string is invalid.",
@@ -319,16 +322,6 @@
self.add_message('too-few-format-args', node=node)
-class StringMethodsChecker(BaseChecker):
- __implements__ = (IAstroidChecker,)
- name = 'string'
- msgs = {
- 'E1310': ("Suspicious argument in %s.%s call",
- "bad-str-strip-call",
- "The argument to a str.{l,r,}strip call contains a"
- " duplicate character, "),
- }
-
@check_messages(*(MSGS.keys()))
def visit_call(self, node):
func = utils.safe_infer(node.func)
@@ -622,5 +615,4 @@
def register(linter):
"""required method to auto register this checker """
linter.register_checker(StringFormatChecker(linter))
- linter.register_checker(StringMethodsChecker(linter))
linter.register_checker(StringConstantChecker(linter))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/pylint/test/functional/string_formatting_disable.py new/pylint-1.5.4/pylint/test/functional/string_formatting_disable.py
--- old/pylint-1.5.3/pylint/test/functional/string_formatting_disable.py 1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-1.5.4/pylint/test/functional/string_formatting_disable.py 2016-01-13 15:25:49.000000000 +0100
@@ -0,0 +1 @@
+"a {} {".format(1) # [bad-format-string]
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/pylint/test/functional/string_formatting_disable.rc new/pylint-1.5.4/pylint/test/functional/string_formatting_disable.rc
--- old/pylint-1.5.3/pylint/test/functional/string_formatting_disable.rc 1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-1.5.4/pylint/test/functional/string_formatting_disable.rc 2016-01-13 15:25:49.000000000 +0100
@@ -0,0 +1,3 @@
+[Messages Control]
+disable=all
+enable=bad-format-string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/pylint/test/functional/string_formatting_disable.txt new/pylint-1.5.4/pylint/test/functional/string_formatting_disable.txt
--- old/pylint-1.5.3/pylint/test/functional/string_formatting_disable.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-1.5.4/pylint/test/functional/string_formatting_disable.txt 2016-01-13 15:25:49.000000000 +0100
@@ -0,0 +1 @@
+bad-format-string:1::Invalid format string
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/pylint/test/functional/super_checks.py new/pylint-1.5.4/pylint/test/functional/super_checks.py
--- old/pylint-1.5.3/pylint/test/functional/super_checks.py 2015-12-24 17:12:25.000000000 +0100
+++ new/pylint-1.5.4/pylint/test/functional/super_checks.py 2016-01-12 08:40:27.000000000 +0100
@@ -1,4 +1,4 @@
-# pylint: disable=too-few-public-methods,import-error, no-absolute-import,missing-docstring
+# pylint: disable=too-few-public-methods,import-error, no-absolute-import,missing-docstring, wrong-import-position,invalid-name
"""check use of super"""
from unknown import Missing
@@ -96,3 +96,19 @@
# Even though BaseClass has a __getattr__, that won't
# be called.
super(InvalidSuperChecks, self).attribute_error() # [no-member]
+
+
+
+# Regression for PyCQA/pylint/issues/773
+import subprocess
+
+# The problem was related to astroid not filtering statements
+# at scope level properly, basically not doing strong updates.
+try:
+ TimeoutExpired = subprocess.TimeoutExpired
+except AttributeError:
+ class TimeoutExpired(subprocess.CalledProcessError):
+ def __init__(self):
+ returncode = -1
+ self.timeout = -1
+ super(TimeoutExpired, self).__init__(returncode)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/pylint/test/functional/unneeded_not.py new/pylint-1.5.4/pylint/test/functional/unneeded_not.py
--- old/pylint-1.5.3/pylint/test/functional/unneeded_not.py 2016-01-11 10:42:15.000000000 +0100
+++ new/pylint-1.5.4/pylint/test/functional/unneeded_not.py 2016-01-15 20:56:43.000000000 +0100
@@ -1,6 +1,6 @@
"""Check exceeding negations in boolean expressions trigger warnings"""
-# pylint: disable=singleton-comparison, too-many-branches, too-few-public-methods
+# pylint: disable=singleton-comparison,too-many-branches,too-few-public-methods,undefined-variable
def unneeded_not():
"""This is not ok
@@ -37,7 +37,7 @@
pass
-def not_checked():
+def tolerated_statements():
"""This is ok"""
bool_var = True
someint = 2
@@ -49,6 +49,13 @@
pass
if not 2 <= someint < 3 < 4:
pass
+ if not set('bar') <= set('foobaz'):
+ pass
+ if not set(something) <= 3:
+ pass
+ if not frozenset(something) <= 3:
+ pass
+
class Klass(object):
"""This is also ok"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/pylint/test/unittest_checker_strings.py new/pylint-1.5.4/pylint/test/unittest_checker_strings.py
--- old/pylint-1.5.3/pylint/test/unittest_checker_strings.py 2015-12-24 17:12:26.000000000 +0100
+++ new/pylint-1.5.4/pylint/test/unittest_checker_strings.py 2016-01-13 15:25:49.000000000 +0100
@@ -24,7 +24,7 @@
class StringCheckerTest(CheckerTestCase):
- CHECKER_CLASS = strings.StringMethodsChecker
+ CHECKER_CLASS = strings.StringFormatChecker
@unittest.skipUnless(sys.version_info > (3, 0),
"Tests that the string formatting checker "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/pylint.egg-info/PKG-INFO new/pylint-1.5.4/pylint.egg-info/PKG-INFO
--- old/pylint-1.5.3/pylint.egg-info/PKG-INFO 2016-01-11 11:07:49.000000000 +0100
+++ new/pylint-1.5.4/pylint.egg-info/PKG-INFO 2016-01-15 21:32:43.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pylint
-Version: 1.5.3
+Version: 1.5.4
Summary: python code static checker
Home-page: http://www.pylint.org
Author: Logilab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/pylint.egg-info/SOURCES.txt new/pylint-1.5.4/pylint.egg-info/SOURCES.txt
--- old/pylint-1.5.3/pylint.egg-info/SOURCES.txt 2016-01-11 11:07:49.000000000 +0100
+++ new/pylint-1.5.4/pylint.egg-info/SOURCES.txt 2016-01-15 21:32:43.000000000 +0100
@@ -468,6 +468,9 @@
pylint/test/functional/statement_without_effect.txt
pylint/test/functional/string_formatting.py
pylint/test/functional/string_formatting.txt
+pylint/test/functional/string_formatting_disable.py
+pylint/test/functional/string_formatting_disable.rc
+pylint/test/functional/string_formatting_disable.txt
pylint/test/functional/string_formatting_failed_inference.py
pylint/test/functional/string_formatting_py27.py
pylint/test/functional/string_formatting_py27.rc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.3/setup.cfg new/pylint-1.5.4/setup.cfg
--- old/pylint-1.5.3/setup.cfg 2016-01-11 11:07:57.000000000 +0100
+++ new/pylint-1.5.4/setup.cfg 2016-01-15 21:32:52.000000000 +0100
@@ -6,7 +6,7 @@
provides = pylint
[egg_info]
+tag_date = 0
tag_build =
tag_svn_revision = 0
-tag_date = 0
1
0
Hello community,
here is the log from the commit of package python3-pip for openSUSE:Factory checked in at 2016-01-26 10:15:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-pip (Old)
and /work/SRC/openSUSE:Factory/.python3-pip.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-pip"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-pip/python3-pip.changes 2016-01-22 01:10:26.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-pip.new/python3-pip.changes 2016-01-26 10:15:19.000000000 +0100
@@ -1,0 +2,27 @@
+Sun Jan 24 03:39:13 UTC 2016 - arun(a)gmx.de
+
+- specfile:
+ * update copyright year
+
+- update to version 8.0.2:
+ * Stop attempting to trust the system CA trust store because it's
+ extremely common for them to be broken, often in incompatible
+ ways. See #3416.
+
+- changes from version 8.0.1 (2016-01-21):
+ * Detect CAPaths in addition to CAFiles on platforms that provide
+ them.
+ * Installing argparse or wsgiref will no longer warn or error - pip
+ will allow the installation even though it may be useless (since
+ the installed thing will be shadowed by the standard library).
+ * Upgrading a distutils installed item that is installed outside of
+ a virtual environment, while inside of a virtual environment will
+ no longer warn or error.
+ * Fix a bug where pre-releases were showing up in pip list
+ --outdated without the --pre flag.
+ * Switch the SOABI emulation from using RuntimeWarnings to debug
+ logging.
+ * Rollback the removal of the ability to uninstall distutils
+ installed items until a future date.
+
+-------------------------------------------------------------------
Old:
----
pip-8.0.0.tar.gz
New:
----
pip-8.0.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-pip.spec ++++++
--- /var/tmp/diff_new_pack.umJDMQ/_old 2016-01-26 10:15:20.000000000 +0100
+++ /var/tmp/diff_new_pack.umJDMQ/_new 2016-01-26 10:15:20.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-pip
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: python3-pip
-Version: 8.0.0
+Version: 8.0.2
Release: 0
Url: http://www.pip-installer.org
Summary: Pip installs packages. Python packages. An easy_install replacement
++++++ pip-8.0.0.tar.gz -> pip-8.0.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/AUTHORS.txt new/pip-8.0.2/AUTHORS.txt
--- old/pip-8.0.0/AUTHORS.txt 2016-01-20 01:38:23.000000000 +0100
+++ new/pip-8.0.2/AUTHORS.txt 2016-01-22 00:49:22.000000000 +0100
@@ -46,6 +46,7 @@
Cristian Sorinel <cristian.sorinel(a)gmail.com>
Dan Savilonis <djs(a)n-cube.org>
Dan Sully <daniel-github(a)electricrain.com>
+daniel <mcdonaldd(a)unimelb.edu.au>
Daniel Collins <accounts(a)dac.io>
Daniel Hahler <git(a)thequod.de>
Daniel Holth <dholth(a)fastmail.fm>
@@ -67,6 +68,7 @@
Dongweiming <dongweiming(a)admaster.com.cn>
Douglas Thor <dougthor42(a)users.noreply.github.com>
Dwayne Bailey <dwayne(a)translate.org.za>
+Emil Styrke <emil.styrke(a)gmail.com>
Endoh Takanao <djmchl(a)gmail.com>
enoch <lanxenet(a)gmail.com>
Eric Gillingham <Gillingham(a)bikezen.net>
@@ -155,6 +157,7 @@
Matthew Trumbell <matthew(a)thirdstonepartners.com>
Matthias Bussonnier <bussonniermatthias(a)gmail.com>
Maxime Rouyrre <rouyrre+git(a)gmail.com>
+Michael <michael-k(a)users.noreply.github.com>
Michael E. Karpeles <michael.karpeles(a)gmail.com>
Michael Klich <michal(a)michalklich.com>
Michael Williamson <mike(a)zwobble.org>
@@ -240,6 +243,7 @@
Ville Skyttä <ville.skytta(a)iki.fi>
Vinay Sajip <vinay_sajip(a)yahoo.co.uk>
Vitaly Babiy <vbabiy86(a)gmail.com>
+Vladimir Rutsky <rutsky(a)users.noreply.github.com>
W. Trevor King <wking(a)drexel.edu>
Wil Tan <wil(a)dready.org>
William ML Leslie <william.leslie.ttg(a)gmail.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/CHANGES.txt new/pip-8.0.2/CHANGES.txt
--- old/pip-8.0.0/CHANGES.txt 2016-01-20 01:38:23.000000000 +0100
+++ new/pip-8.0.2/CHANGES.txt 2016-01-22 00:49:22.000000000 +0100
@@ -1,3 +1,30 @@
+**8.0.2 (2016-01-21)**
+
+* Stop attempting to trust the system CA trust store because it's extremely
+ common for them to be broken, often in incompatible ways. See #3416.
+
+
+**8.0.1 (2016-01-21)**
+
+* Detect CAPaths in addition to CAFiles on platforms that provide them.
+
+* Installing argparse or wsgiref will no longer warn or error - pip will allow
+ the installation even though it may be useless (since the installed thing
+ will be shadowed by the standard library).
+
+* Upgrading a distutils installed item that is installed outside of a virtual
+ environment, while inside of a virtual environment will no longer warn or
+ error.
+
+* Fix a bug where pre-releases were showing up in ``pip list --outdated``
+ without the ``--pre`` flag.
+
+* Switch the SOABI emulation from using RuntimeWarnings to debug logging.
+
+* Rollback the removal of the ability to uninstall distutils installed items
+ until a future date.
+
+
**8.0.0 (2016-01-19)**
* **BACKWARD INCOMPATIBLE** Drop support for Python 3.2.
@@ -67,7 +94,7 @@
* Drop PasteScript specific egg_info hack. (:pull:`3270`)
-* Allow combination of pip list options --editable with --outdated/--updtodate.
+* Allow combination of pip list options --editable with --outdated/--uptodate.
(:issue:`933`)
* Gives VCS implementations control over saying whether a project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/PKG-INFO new/pip-8.0.2/PKG-INFO
--- old/pip-8.0.0/PKG-INFO 2016-01-20 01:38:34.000000000 +0100
+++ new/pip-8.0.2/PKG-INFO 2016-01-22 00:49:26.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pip
-Version: 8.0.0
+Version: 8.0.2
Summary: The PyPA recommended tool for installing Python packages.
Home-page: https://pip.pypa.io/
Author: The pip developers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/docs/development.rst new/pip-8.0.2/docs/development.rst
--- old/pip-8.0.0/docs/development.rst 2016-01-20 01:38:23.000000000 +0100
+++ new/pip-8.0.2/docs/development.rst 2016-01-22 00:49:22.000000000 +0100
@@ -104,11 +104,11 @@
6. Upload the distribution files to PyPI using twine
(``twine upload -s dist/*``). The upload should include GPG signatures of
the distribution files.
-7. Regenerate the ``get-pip.py`` script by running
- ``invoke generate.installer`` on the master branch, and committing the
+7. Merge the ``master`` branch into the ``develop`` branch.
+8. Push all of the changes.
+9. Regenerate the ``get-pip.py`` script by running
+ ``invoke generate.installer`` in the get-pip repository, and committing the
results.
-8. Merge the ``master`` branch into the ``develop`` branch.
-9. Push all of the changes.
Creating a Bugfix Release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/docs/reference/pip_install.rst new/pip-8.0.2/docs/reference/pip_install.rst
--- old/pip-8.0.0/docs/reference/pip_install.rst 2016-01-20 01:38:23.000000000 +0100
+++ new/pip-8.0.2/docs/reference/pip_install.rst 2016-01-22 00:49:22.000000000 +0100
@@ -235,7 +235,7 @@
::
SomeProject ==5.4 ; python_version < '2.7'
- SomeProject; sys.platform == 'win32'
+ SomeProject; sys_platform == 'win32'
Environment markers are supported in the command line and in requirements files.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/pip/__init__.py new/pip-8.0.2/pip/__init__.py
--- old/pip-8.0.0/pip/__init__.py 2016-01-20 01:38:23.000000000 +0100
+++ new/pip-8.0.2/pip/__init__.py 2016-01-22 00:49:22.000000000 +0100
@@ -30,7 +30,7 @@
cmdoptions = pip.cmdoptions
# The version as used in the setup.py and the docs conf.py
-__version__ = "8.0.0"
+__version__ = "8.0.2"
logger = logging.getLogger(__name__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/pip/cmdoptions.py new/pip-8.0.2/pip/cmdoptions.py
--- old/pip-8.0.0/pip/cmdoptions.py 2016-01-20 01:38:23.000000000 +0100
+++ new/pip-8.0.2/pip/cmdoptions.py 2016-01-22 00:49:22.000000000 +0100
@@ -17,7 +17,7 @@
FormatControl, fmt_ctl_handle_mutual_exclude, fmt_ctl_no_binary,
fmt_ctl_no_use_wheel)
from pip.models import PyPI
-from pip.locations import CA_BUNDLE_PATH, USER_CACHE_DIR, src_prefix
+from pip.locations import USER_CACHE_DIR, src_prefix
from pip.utils.hashes import STRONG_HASHES
@@ -197,7 +197,6 @@
'--cert',
dest='cert',
type='str',
- default=CA_BUNDLE_PATH,
metavar='path',
help="Path to alternate CA bundle.")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/pip/commands/list.py new/pip-8.0.2/pip/commands/list.py
--- old/pip-8.0.0/pip/commands/list.py 2016-01-20 01:38:23.000000000 +0100
+++ new/pip-8.0.2/pip/commands/list.py 2016-01-22 00:49:22.000000000 +0100
@@ -159,6 +159,11 @@
for dist in installed_packages:
typ = 'unknown'
all_candidates = finder.find_all_candidates(dist.key)
+ if not options.pre:
+ # Remove prereleases
+ all_candidates = [candidate for candidate in all_candidates
+ if not candidate.version.is_prerelease]
+
if not all_candidates:
continue
best_candidate = max(all_candidates,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/pip/compat/__init__.py new/pip-8.0.2/pip/compat/__init__.py
--- old/pip-8.0.0/pip/compat/__init__.py 2016-01-20 01:38:23.000000000 +0100
+++ new/pip-8.0.2/pip/compat/__init__.py 2016-01-22 00:49:22.000000000 +0100
@@ -23,6 +23,26 @@
ipaddress.ip_network = ipaddress.IPNetwork
+try:
+ import sysconfig
+
+ def get_stdlib():
+ paths = [
+ sysconfig.get_path("stdlib"),
+ sysconfig.get_path("platstdlib"),
+ ]
+ return set(filter(bool, paths))
+except ImportError:
+ from distutils import sysconfig
+
+ def get_stdlib():
+ paths = [
+ sysconfig.get_python_lib(standard_lib=True),
+ sysconfig.get_python_lib(standard_lib=True, plat_specific=True),
+ ]
+ return set(filter(bool, paths))
+
+
__all__ = [
"logging_dictConfig", "ipaddress", "uses_pycache", "console_to_str",
"native_str", "get_path_uid", "stdlib_pkgs", "WINDOWS", "samefile"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/pip/locations.py new/pip-8.0.2/pip/locations.py
--- old/pip-8.0.0/pip/locations.py 2016-01-20 01:38:23.000000000 +0100
+++ new/pip-8.0.2/pip/locations.py 2016-01-22 00:49:22.000000000 +0100
@@ -4,7 +4,6 @@
import os
import os.path
import site
-import ssl
import sys
from distutils import sysconfig
@@ -14,17 +13,6 @@
from pip.utils import appdirs
-# if the Python we're running on is new enough to have the needed API then
-# we'll ask OpenSSL to give us the path to the default CA Bundle. If this API
-# doesn't exist or we cannot resolve the path to an existing file, then we will
-# simply set this to None. Setting this to None will have requests fall back
-# and use it's default CA Bundle logic.
-if getattr(ssl, "get_default_verify_paths", None):
- CA_BUNDLE_PATH = ssl.get_default_verify_paths().cafile
-else:
- CA_BUNDLE_PATH = None
-
-
# Application Directories
USER_CACHE_DIR = appdirs.user_cache_dir("pip")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/pip/pep425tags.py new/pip-8.0.2/pip/pep425tags.py
--- old/pip-8.0.0/pip/pep425tags.py 2016-01-20 01:38:23.000000000 +0100
+++ new/pip-8.0.2/pip/pep425tags.py 2016-01-22 00:49:22.000000000 +0100
@@ -5,6 +5,7 @@
import sys
import warnings
import platform
+import logging
try:
import sysconfig
@@ -13,6 +14,10 @@
import distutils.sysconfig as sysconfig
import distutils.util
+
+logger = logging.getLogger(__name__)
+
+
_osx_arch_pat = re.compile(r'(.+)_(\d+)_(\d+)_(.+)')
@@ -69,8 +74,8 @@
val = get_config_var(var)
if val is None:
if warn:
- warnings.warn("Config variable '{0}' is unset, Python ABI tag may "
- "be incorrect".format(var), RuntimeWarning, 2)
+ logger.debug("Config variable '%s' is unset, Python ABI tag may "
+ "be incorrect", var)
return fallback()
return val == expected
@@ -116,8 +121,8 @@
# of MACOSX_DEPLOYMENT_TARGET on which Python was built, which may
# be signficantly older than the user's current machine.
release, _, machine = platform.mac_ver()
- major, minor, micro = release.split('.')
- return 'macosx_{0}_{1}_{2}'.format(major, minor, machine)
+ split_ver = release.split('.')
+ return 'macosx_{0}_{1}_{2}'.format(split_ver[0], split_ver[1], machine)
# XXX remove distutils dependency
return distutils.util.get_platform().replace('.', '_').replace('-', '_')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/pip/req/req_install.py new/pip-8.0.2/pip/req/req_install.py
--- old/pip-8.0.0/pip/req/req_install.py 2016-01-20 01:38:23.000000000 +0100
+++ new/pip-8.0.2/pip/req/req_install.py 2016-01-22 00:49:22.000000000 +0100
@@ -7,10 +7,11 @@
import sys
import tempfile
import traceback
+import warnings
import zipfile
-from distutils.util import change_root
from distutils import sysconfig
+from distutils.util import change_root
from email.parser import FeedParser
from pip._vendor import pkg_resources, six
@@ -20,7 +21,7 @@
import pip.wheel
-from pip.compat import native_str, WINDOWS
+from pip.compat import native_str, get_stdlib, WINDOWS
from pip.download import is_url, url_to_path, path_to_url, is_archive_file
from pip.exceptions import (
InstallationError, UninstallationError, UnsupportedWheel,
@@ -32,9 +33,11 @@
display_path, rmtree, ask_path_exists, backup_dir, is_installable_dir,
dist_in_usersite, dist_in_site_packages, egg_link_path,
call_subprocess, read_text_file, FakeFile, _make_build_dir, ensure_dir,
- get_installed_version, canonicalize_name
+ get_installed_version, canonicalize_name, normalize_path, dist_is_local,
)
+
from pip.utils.hashes import Hashes
+from pip.utils.deprecation import RemovedInPip10Warning
from pip.utils.logging import indent_log
from pip.utils.setuptools_build import SETUPTOOLS_SHIM
from pip.utils.ui import open_spinner
@@ -114,6 +117,9 @@
self.install_succeeded = None
# UninstallPathSet of uninstalled distribution (for possible rollback)
self.uninstalled = None
+ # Set True if a legitimate do-nothing-on-uninstall has happened - e.g.
+ # system site packages, stdlib packages.
+ self.nothing_to_uninstall = False
self.use_user_site = False
self.target_dir = None
self.options = options if options else {}
@@ -606,6 +612,26 @@
)
dist = self.satisfied_by or self.conflicts_with
+ dist_path = normalize_path(dist.location)
+ if not dist_is_local(dist):
+ logger.info(
+ "Not uninstalling %s at %s, outside environment %s",
+ dist.key,
+ dist_path,
+ sys.prefix,
+ )
+ self.nothing_to_uninstall = True
+ return
+
+ if dist_path in get_stdlib():
+ logger.info(
+ "Not uninstalling %s at %s, as it is in the standard library.",
+ dist.key,
+ dist_path,
+ )
+ self.nothing_to_uninstall = True
+ return
+
paths_to_remove = UninstallPathSet(dist)
develop_egg_link = egg_link_path(dist)
develop_egg_link_egg_info = '{0}.egg-info'.format(
@@ -647,12 +673,14 @@
paths_to_remove.add(path + '.pyo')
elif distutils_egg_info:
- raise UninstallationError(
- "Detected a distutils installed project ({0!r}) which we "
- "cannot uninstall. The metadata provided by distutils does "
- "not contain a list of files which have been installed, so "
- "pip does not know which files to uninstall.".format(self.name)
+ warnings.warn(
+ "Uninstalling a distutils installed project ({0}) has been "
+ "deprecated and will be removed in a future version. This is "
+ "due to the fact that uninstalling a distutils project will "
+ "only partially uninstall the project.".format(self.name),
+ RemovedInPip10Warning,
)
+ paths_to_remove.add(distutils_egg_info)
elif dist.location.endswith('.egg'):
# package installed by easy_install
@@ -729,15 +757,15 @@
self.uninstalled.rollback()
else:
logger.error(
- "Can't rollback %s, nothing uninstalled.", self.project_name,
+ "Can't rollback %s, nothing uninstalled.", self.name,
)
def commit_uninstall(self):
if self.uninstalled:
self.uninstalled.commit()
- else:
+ elif not self.nothing_to_uninstall:
logger.error(
- "Can't commit %s, nothing uninstalled.", self.project_name,
+ "Can't commit %s, nothing uninstalled.", self.name,
)
def archive(self, build_dir):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/pip/req/req_uninstall.py new/pip-8.0.2/pip/req/req_uninstall.py
--- old/pip-8.0.0/pip/req/req_uninstall.py 2016-01-20 01:38:23.000000000 +0100
+++ new/pip-8.0.2/pip/req/req_uninstall.py 2016-01-22 00:49:22.000000000 +0100
@@ -2,13 +2,11 @@
import logging
import os
-import sys
import tempfile
from pip.compat import uses_pycache, WINDOWS, cache_from_source
from pip.exceptions import UninstallationError
-from pip.utils import (rmtree, ask, is_local, dist_is_local, renames,
- normalize_path)
+from pip.utils import rmtree, ask, is_local, renames, normalize_path
from pip.utils.logging import indent_log
@@ -34,17 +32,6 @@
"""
return is_local(path)
- def _can_uninstall(self):
- if not dist_is_local(self.dist):
- logger.info(
- "Not uninstalling %s at %s, outside environment %s",
- self.dist.project_name,
- normalize_path(self.dist.location),
- sys.prefix,
- )
- return False
- return True
-
def add(self, path):
head, tail = os.path.split(path)
@@ -94,8 +81,6 @@
def remove(self, auto_confirm=False):
"""Remove paths in ``self.paths`` with confirmation (unless
``auto_confirm`` is True)."""
- if not self._can_uninstall():
- return
if not self.paths:
logger.info(
"Can't uninstall '%s'. No files were found to uninstall.",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/pip/vcs/git.py new/pip-8.0.2/pip/vcs/git.py
--- old/pip-8.0.0/pip/vcs/git.py 2016-01-20 01:38:23.000000000 +0100
+++ new/pip-8.0.2/pip/vcs/git.py 2016-01-22 00:49:22.000000000 +0100
@@ -100,7 +100,7 @@
def update(self, dest, rev_options):
# First fetch changes from the default remote
self.run_command(['fetch', '-q'], cwd=dest)
- # Then reset to wanted revision (maby even origin/master)
+ # Then reset to wanted revision (maybe even origin/master)
if rev_options:
rev_options = self.check_rev_options(
rev_options[0], dest, rev_options,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-8.0.0/pip.egg-info/PKG-INFO new/pip-8.0.2/pip.egg-info/PKG-INFO
--- old/pip-8.0.0/pip.egg-info/PKG-INFO 2016-01-20 01:38:33.000000000 +0100
+++ new/pip-8.0.2/pip.egg-info/PKG-INFO 2016-01-22 00:49:24.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pip
-Version: 8.0.0
+Version: 8.0.2
Summary: The PyPA recommended tool for installing Python packages.
Home-page: https://pip.pypa.io/
Author: The pip developers
1
0
Hello community,
here is the log from the commit of package xboxdrv for openSUSE:Factory checked in at 2016-01-26 10:15:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xboxdrv (Old)
and /work/SRC/openSUSE:Factory/.xboxdrv.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xboxdrv"
Changes:
--------
--- /work/SRC/openSUSE:Factory/xboxdrv/xboxdrv.changes 2015-05-06 11:18:48.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.xboxdrv.new/xboxdrv.changes 2016-01-26 10:15:16.000000000 +0100
@@ -1,0 +2,29 @@
+Sun Jan 24 16:40:47 UTC 2016 - kieltux(a)gmail.com
+
+- Update to version 0.8.8:
+ * use session dbus even for user root, except when DISPLAY is
+ not set
+ * fixed issue in to_float() triggering assert()
+ * fixed vendor/product not getting set for virtual device in
+ daemon mode
+ * fixed \r\n newlines causing errors in INIParser, ignore \r like
+ whitespace
+ * added device support for Rock Candy Gamepad Wired Controller,
+ Mad Catz Street Fighter IV SE Fighting Stick, MadCatz GamePad,
+ Hori Fighting Edge, Elcom JC-U3613M, Mad Catz Fightpad,
+ Mad Cats Ghost Recon FS GamePad, Mad Catz SFxT Fightstick Pro,
+ Razer Sabertooth, FUS1ON Tournament Controller, PowerA Pro Ex
+ and others
+ * fixed USB cleanup issue on exit
+ * Buttonevent exec: double fork to avoid zombies
+ * fixed axis handling in FourWayRestrictorModifier
+ * fixed device disconnect issues
+ * fixed segfault due to incorrect shutdown of USB subsystem
+ * fixed some compiler warnings/errors
+ * ignore Play'n Charge kit instead of error out
+ * added device support for Thrustmaster Gamepad GP XID, Razer
+ Sabertooth, Gamestop BB-070, Afterglow AX.1, MLG Pro Circuit
+ Controller (Xbox), Rock Candy, Saitek p3600, Hori GEM Xbox
+ controller
+
+-------------------------------------------------------------------
Old:
----
xboxdrv-linux-0.8.5.tar.bz2
New:
----
xboxdrv-linux-0.8.8.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xboxdrv.spec ++++++
--- /var/tmp/diff_new_pack.8NDqSC/_old 2016-01-26 10:15:16.000000000 +0100
+++ /var/tmp/diff_new_pack.8NDqSC/_new 2016-01-26 10:15:16.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package xboxdrv
#
-# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,7 +16,7 @@
#
Name: xboxdrv
-Version: 0.8.5
+Version: 0.8.8
Release: 0
License: GPL-3.0+
Summary: Xbox/Xbo360 USB Gamepad Driver for Userspace
@@ -83,7 +83,7 @@
%files
%defattr(-,root,root)
-%doc AUTHORS COPYING NEWS PROTOCOL README TODO VERSION
+%doc AUTHORS COPYING NEWS PROTOCOL README.md TODO VERSION
%{_bindir}/%{name}
%{_sbindir}/rc%{name}
%config(noreplace) %{_sysconfdir}/%{name}.conf
++++++ xboxdrv-linux-0.8.5.tar.bz2 -> xboxdrv-linux-0.8.8.tar.bz2 ++++++
++++ 9423 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python3-scipy for openSUSE:Factory checked in at 2016-01-26 10:15:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-scipy (Old)
and /work/SRC/openSUSE:Factory/.python3-scipy.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-scipy"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-scipy/python3-scipy.changes 2015-10-26 12:49:19.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-scipy.new/python3-scipy.changes 2016-01-26 10:15:14.000000000 +0100
@@ -1,0 +2,20 @@
+Sun Jan 24 03:47:20 UTC 2016 - arun(a)gmx.de
+
+- specfile:
+ * update copyright year
+
+- update to version 0.17.0:
+ (see http://scipy.github.io/devdocs/release.0.17.0.html for full changelog)
+ * Highlights
+ + New functions for linear and nonlinear least squares
+ optimization with constraints: scipy.optimize.lsq_linear and
+ scipy.optimize.least_squares
+ + Support for fitting with bounds in scipy.optimize.curve_fit.
+ + Significant improvements to scipy.stats, providing many
+ functions with better handing of inputs which have NaNs or are
+ empty, improved documentation, and consistent behavior between
+ scipy.stats and scipy.stats.mstats.
+ + Significant performance improvements and new functionality in
+ scipy.spatial.cKDTree.
+
+-------------------------------------------------------------------
Old:
----
scipy-0.16.1.tar.gz
New:
----
scipy-0.17.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-scipy.spec ++++++
--- /var/tmp/diff_new_pack.0HdBSj/_old 2016-01-26 10:15:15.000000000 +0100
+++ /var/tmp/diff_new_pack.0HdBSj/_new 2016-01-26 10:15:15.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-scipy
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define with_atlas 0
Name: python3-scipy
-Version: 0.16.1
+Version: 0.17.0
Release: 0
Summary: Scientific Tools for Python
License: BSD-3-Clause and LGPL-2.0+
++++++ scipy-0.16.1.tar.gz -> scipy-0.17.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/python3-scipy/scipy-0.16.1.tar.gz /work/SRC/openSUSE:Factory/.python3-scipy.new/scipy-0.17.0.tar.gz differ: char 5, line 1
1
0
Hello community,
here is the log from the commit of package ShellCheck for openSUSE:Factory checked in at 2016-01-26 10:15:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ShellCheck (Old)
and /work/SRC/openSUSE:Factory/.ShellCheck.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ShellCheck"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ShellCheck/ShellCheck.changes 2016-01-13 22:45:59.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ShellCheck.new/ShellCheck.changes 2016-01-26 10:15:13.000000000 +0100
@@ -1,0 +2,5 @@
+Sun Jan 24 12:56:34 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 0.4.3
+
+-------------------------------------------------------------------
Old:
----
ShellCheck-0.4.2.tar.gz
New:
----
ShellCheck-0.4.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ShellCheck.spec ++++++
--- /var/tmp/diff_new_pack.Lh8Uch/_old 2016-01-26 10:15:13.000000000 +0100
+++ /var/tmp/diff_new_pack.Lh8Uch/_new 2016-01-26 10:15:13.000000000 +0100
@@ -21,7 +21,7 @@
%bcond_with tests
Name: ShellCheck
-Version: 0.4.2
+Version: 0.4.3
Release: 0
Summary: Shell script analysis tool
License: GPL-3.0+
@@ -41,6 +41,7 @@
BuildRequires: ghc-json-devel
BuildRequires: ghc-mtl-devel
BuildRequires: ghc-parsec-devel
+BuildRequires: ghc-process-devel
BuildRequires: ghc-regex-tdfa-devel
# End cabal-rpm deps
++++++ ShellCheck-0.4.2.tar.gz -> ShellCheck-0.4.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ShellCheck-0.4.2/Setup.hs new/ShellCheck-0.4.3/Setup.hs
--- old/ShellCheck-0.4.2/Setup.hs 2016-01-09 23:44:57.000000000 +0100
+++ new/ShellCheck-0.4.3/Setup.hs 2016-01-14 01:56:41.000000000 +0100
@@ -8,21 +8,13 @@
simpleUserHooks )
import Distribution.Simple.Setup ( SDistFlags )
--- | This requires the process package from,
---
--- https://hackage.haskell.org/package/process
---
-import System.Process ( callCommand )
+import System.Process ( system )
--- | This will use almost the default implementation, except we switch
--- out the default pre-sdist hook with our own, 'myPreSDist'.
---
main = defaultMainWithHooks myHooks
where
myHooks = simpleUserHooks { preSDist = myPreSDist }
-
-- | This hook will be executed before e.g. @cabal sdist@. It runs
-- pandoc to create the man page from shellcheck.1.md. If the pandoc
-- command is not found, this will fail with an error message:
@@ -35,9 +27,10 @@
--
myPreSDist :: Args -> SDistFlags -> IO HookedBuildInfo
myPreSDist _ _ = do
- putStrLn "Building the man page..."
+ putStrLn "Building the man page (shellcheck.1) with pandoc..."
putStrLn pandoc_cmd
- callCommand pandoc_cmd
+ result <- system pandoc_cmd
+ putStrLn $ "pandoc exited with " ++ show result
return emptyHookedBuildInfo
where
pandoc_cmd = "pandoc -s -t man shellcheck.1.md -o shellcheck.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ShellCheck-0.4.2/ShellCheck.cabal new/ShellCheck-0.4.3/ShellCheck.cabal
--- old/ShellCheck-0.4.2/ShellCheck.cabal 2016-01-09 23:44:57.000000000 +0100
+++ new/ShellCheck-0.4.3/ShellCheck.cabal 2016-01-14 01:56:41.000000000 +0100
@@ -1,5 +1,5 @@
Name: ShellCheck
-Version: 0.4.2
+Version: 0.4.3
Synopsis: Shell script analysis tool
License: GPL-3
License-file: LICENSE
@@ -44,7 +44,9 @@
mtl >= 2.2.1,
parsec,
regex-tdfa,
- QuickCheck >= 2.7.4
+ QuickCheck >= 2.7.4,
+ -- When cabal supports it, move this to setup-depends:
+ process
exposed-modules:
ShellCheck.AST
ShellCheck.ASTLib
1
0
Hello community,
here is the log from the commit of package libolecf for openSUSE:Factory checked in at 2016-01-26 10:15:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libolecf (Old)
and /work/SRC/openSUSE:Factory/.libolecf.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libolecf"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libolecf/libolecf.changes 2015-01-30 15:06:43.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libolecf.new/libolecf.changes 2016-01-26 10:15:11.000000000 +0100
@@ -1,0 +2,15 @@
+Sat Jan 23 15:54:59 UTC 2016 - Greg.Freemyer(a)gmail.com
+
+- update to v0~20151223
+ * worked on format support
+ * applied updates
+ * worked on Python bindings
+ * changed version for pypi repacking
+ * worked on setup.py
+ * bug fixes after fuzzing with AFL
+ * improved support file without directory entries
+ * added more bounds checks
+- required by plaso v1.4
+- update BuildRequires libfvalue to require version 0~20151226
+
+-------------------------------------------------------------------
Old:
----
libolecf-alpha-20150106.tar.gz
New:
----
libolecf-alpha-20151223.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libolecf.spec ++++++
--- /var/tmp/diff_new_pack.uAIV4Q/_old 2016-01-26 10:15:12.000000000 +0100
+++ /var/tmp/diff_new_pack.uAIV4Q/_new 2016-01-26 10:15:12.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libolecf
#
-# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
Name: libolecf
%define lname libolecf1
-%define timestamp 20150106
+%define timestamp 20151223
Version: 0~%timestamp
Release: 0
Summary: Library and tools to access the OLE 2 Compound File (OLECF) format
@@ -41,7 +41,7 @@
BuildRequires: pkgconfig(libcthreads) >= 20130723
BuildRequires: pkgconfig(libfguid) >= 20140103
BuildRequires: pkgconfig(libfole) >= 20120426
-BuildRequires: pkgconfig(libfvalue) >= 20120428
+BuildRequires: pkgconfig(libfvalue) >= 20151226
BuildRequires: pkgconfig(libuna)
# testing fails with external package from factory
#BuildRequires: pkgconfig(libcdata) > 20140105
++++++ libolecf-alpha-20150106.tar.gz -> libolecf-alpha-20151223.tar.gz ++++++
++++ 17351 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package synergy for openSUSE:Factory checked in at 2016-01-26 10:15:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/synergy (Old)
and /work/SRC/openSUSE:Factory/.synergy.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "synergy"
Changes:
--------
--- /work/SRC/openSUSE:Factory/synergy/synergy.changes 2015-10-12 10:01:57.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.synergy.new/synergy.changes 2016-01-26 10:15:09.000000000 +0100
@@ -1,0 +2,7 @@
+Sat Jan 16 15:39:44 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 1.7.5
+ * Bug #5030 - Display scaling breaks edge detection on Windows
+ * Bug #5064 - Compile fails on Mac OS X 10.11 (unused typedef)
+
+-------------------------------------------------------------------
Old:
----
v1.7.4-stable.tar.gz
New:
----
v1.7.5-stable.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ synergy.spec ++++++
--- /var/tmp/diff_new_pack.dDAvyI/_old 2016-01-26 10:15:11.000000000 +0100
+++ /var/tmp/diff_new_pack.dDAvyI/_new 2016-01-26 10:15:11.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package synergy
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: synergy
-Version: 1.7.4
+Version: 1.7.5
Release: 0
Summary: Mouse, keyboard and clipboard sharing utility
License: GPL-2.0+
++++++ v1.7.4-stable.tar.gz -> v1.7.5-stable.tar.gz ++++++
/work/SRC/openSUSE:Factory/synergy/v1.7.4-stable.tar.gz /work/SRC/openSUSE:Factory/.synergy.new/v1.7.5-stable.tar.gz differ: char 16, line 1
1
0
Hello community,
here is the log from the commit of package python-Unidecode for openSUSE:Factory checked in at 2016-01-26 10:15:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Unidecode (Old)
and /work/SRC/openSUSE:Factory/.python-Unidecode.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Unidecode"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Unidecode/python-Unidecode.changes 2015-11-18 22:34:33.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-Unidecode.new/python-Unidecode.changes 2016-01-26 10:15:08.000000000 +0100
@@ -1,0 +2,7 @@
+Fri Jan 22 19:02:19 UTC 2016 - benoit.monin(a)gmx.fr
+
+- update to Unidecode 0.04.19:
+ * Add unidecode_expect_ascii() and unidecode_expect_nonascii()
+ functions for performance critical applications.
+
+-------------------------------------------------------------------
Old:
----
Unidecode-0.04.18.tar.gz
New:
----
Unidecode-0.04.19.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Unidecode.spec ++++++
--- /var/tmp/diff_new_pack.T9Cqi3/_old 2016-01-26 10:15:09.000000000 +0100
+++ /var/tmp/diff_new_pack.T9Cqi3/_new 2016-01-26 10:15:09.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-Unidecode
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: python-Unidecode
-Version: 0.04.18
+Version: 0.04.19
Release: 0
Summary: ASCII transliterations of Unicode text
License: GPL-2.0+
++++++ Unidecode-0.04.18.tar.gz -> Unidecode-0.04.19.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Unidecode-0.04.18/ChangeLog new/Unidecode-0.04.19/ChangeLog
--- old/Unidecode-0.04.18/ChangeLog 2015-06-13 13:48:20.000000000 +0200
+++ new/Unidecode-0.04.19/ChangeLog 2016-01-21 17:42:06.000000000 +0100
@@ -1,3 +1,9 @@
+2016-01-21 unidecode 0.04.19
+
+ * Add unidecode_expect_ascii() and unidecode_expect_nonascii()
+ functions for performance critical applications.
+ (thanks to Israel Saeta Perez)
+
2015-06-13 unidecode 0.04.18
* Add a command line utility. (thanks to Andrew Udvare)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Unidecode-0.04.18/MANIFEST.in new/Unidecode-0.04.19/MANIFEST.in
--- old/Unidecode-0.04.18/MANIFEST.in 2015-06-13 14:12:54.000000000 +0200
+++ new/Unidecode-0.04.19/MANIFEST.in 2016-01-21 17:49:08.000000000 +0100
@@ -2,3 +2,4 @@
include ChangeLog
include LICENSE
include README.rst
+recursive-include tests *.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Unidecode-0.04.18/PKG-INFO new/Unidecode-0.04.19/PKG-INFO
--- old/Unidecode-0.04.18/PKG-INFO 2015-06-13 14:17:25.000000000 +0200
+++ new/Unidecode-0.04.19/PKG-INFO 2016-01-21 18:14:54.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: Unidecode
-Version: 0.04.18
+Version: 0.04.19
Summary: ASCII transliterations of Unicode text
Home-page: UNKNOWN
Author: Tomaz Solc
@@ -13,7 +13,7 @@
represent it in ASCII. For example when integrating with legacy code that
doesn't support Unicode, or for ease of entry of non-Roman names on a US
keyboard, or when constructing ASCII machine identifiers from
- human-readable Unicode strings that should still be somewhat intelligeble
+ human-readable Unicode strings that should still be somewhat intelligible
(a popular example of this is when making an URL slug from an article
title).
@@ -50,9 +50,9 @@
Module content
--------------
- The module exports a single function that takes an Unicode object (Python
- 2.x) or string (Python 3.x) and returns a string (that can be encoded to
- ASCII bytes in Python 3.x)::
+ The module exports a function that takes an Unicode object (Python 2.x) or
+ string (Python 3.x) and returns a string (that can be encoded to ASCII bytes in
+ Python 3.x)::
>>> from unidecode import unidecode
>>> unidecode(u'ko\u017eu\u0161\u010dek')
@@ -105,13 +105,39 @@
Installation
------------
- To install Unidecode from the source distribution and run unit tests, use these
- commands::
+ To install the latest version of Unidecode from the Python package index, use
+ these commands::
+
+ $ pip install unidecode
+
+ To install Unidecode from the source distribution and run unit tests, use::
$ python setup.py install
$ python setup.py test
+ Performance notes
+ -----------------
+
+ By default, `unidecode` optimizes for the use case where most of the strings
+ passed to it are already ASCII-only and no transliteration is necessary (this
+ default might change in future versions).
+
+ For performance critical applications, two additional functions are exposed:
+
+ `unidecode_expect_ascii` is optimized for ASCII-only inputs (approximately 5
+ times faster than `unidecode_expect_nonascii` on 10 character strings, more on
+ longer strings), but slightly slower for non-ASCII inputs.
+
+ `unidecode_expect_nonascii` takes approximately the same amount of time on
+ ASCII and non-ASCII inputs, but is slightly faster for non-ASCII inputs than
+ `unidecode_expect_ascii`.
+
+ Apart from differences in run time, both functions produce identical results.
+ For most users of Unidecode, the difference in performance should be
+ negligible.
+
+
Source
------
@@ -136,7 +162,7 @@
Python code and later additions:
- Copyright 2015, Tomaz Solc <tomaz.solc(a)tablix.org>
+ Copyright 2016, Tomaz Solc <tomaz.solc(a)tablix.org>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Unidecode-0.04.18/README.rst new/Unidecode-0.04.19/README.rst
--- old/Unidecode-0.04.18/README.rst 2015-06-13 14:00:40.000000000 +0200
+++ new/Unidecode-0.04.19/README.rst 2016-01-21 17:56:47.000000000 +0100
@@ -5,7 +5,7 @@
represent it in ASCII. For example when integrating with legacy code that
doesn't support Unicode, or for ease of entry of non-Roman names on a US
keyboard, or when constructing ASCII machine identifiers from
-human-readable Unicode strings that should still be somewhat intelligeble
+human-readable Unicode strings that should still be somewhat intelligible
(a popular example of this is when making an URL slug from an article
title).
@@ -42,9 +42,9 @@
Module content
--------------
-The module exports a single function that takes an Unicode object (Python
-2.x) or string (Python 3.x) and returns a string (that can be encoded to
-ASCII bytes in Python 3.x)::
+The module exports a function that takes an Unicode object (Python 2.x) or
+string (Python 3.x) and returns a string (that can be encoded to ASCII bytes in
+Python 3.x)::
>>> from unidecode import unidecode
>>> unidecode(u'ko\u017eu\u0161\u010dek')
@@ -97,13 +97,39 @@
Installation
------------
-To install Unidecode from the source distribution and run unit tests, use these
-commands::
+To install the latest version of Unidecode from the Python package index, use
+these commands::
+
+ $ pip install unidecode
+
+To install Unidecode from the source distribution and run unit tests, use::
$ python setup.py install
$ python setup.py test
+Performance notes
+-----------------
+
+By default, `unidecode` optimizes for the use case where most of the strings
+passed to it are already ASCII-only and no transliteration is necessary (this
+default might change in future versions).
+
+For performance critical applications, two additional functions are exposed:
+
+`unidecode_expect_ascii` is optimized for ASCII-only inputs (approximately 5
+times faster than `unidecode_expect_nonascii` on 10 character strings, more on
+longer strings), but slightly slower for non-ASCII inputs.
+
+`unidecode_expect_nonascii` takes approximately the same amount of time on
+ASCII and non-ASCII inputs, but is slightly faster for non-ASCII inputs than
+`unidecode_expect_ascii`.
+
+Apart from differences in run time, both functions produce identical results.
+For most users of Unidecode, the difference in performance should be
+negligible.
+
+
Source
------
@@ -128,7 +154,7 @@
Python code and later additions:
-Copyright 2015, Tomaz Solc <tomaz.solc(a)tablix.org>
+Copyright 2016, Tomaz Solc <tomaz.solc(a)tablix.org>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Unidecode-0.04.18/Unidecode.egg-info/PKG-INFO new/Unidecode-0.04.19/Unidecode.egg-info/PKG-INFO
--- old/Unidecode-0.04.18/Unidecode.egg-info/PKG-INFO 2015-06-13 14:17:25.000000000 +0200
+++ new/Unidecode-0.04.19/Unidecode.egg-info/PKG-INFO 2016-01-21 18:14:54.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: Unidecode
-Version: 0.04.18
+Version: 0.04.19
Summary: ASCII transliterations of Unicode text
Home-page: UNKNOWN
Author: Tomaz Solc
@@ -13,7 +13,7 @@
represent it in ASCII. For example when integrating with legacy code that
doesn't support Unicode, or for ease of entry of non-Roman names on a US
keyboard, or when constructing ASCII machine identifiers from
- human-readable Unicode strings that should still be somewhat intelligeble
+ human-readable Unicode strings that should still be somewhat intelligible
(a popular example of this is when making an URL slug from an article
title).
@@ -50,9 +50,9 @@
Module content
--------------
- The module exports a single function that takes an Unicode object (Python
- 2.x) or string (Python 3.x) and returns a string (that can be encoded to
- ASCII bytes in Python 3.x)::
+ The module exports a function that takes an Unicode object (Python 2.x) or
+ string (Python 3.x) and returns a string (that can be encoded to ASCII bytes in
+ Python 3.x)::
>>> from unidecode import unidecode
>>> unidecode(u'ko\u017eu\u0161\u010dek')
@@ -105,13 +105,39 @@
Installation
------------
- To install Unidecode from the source distribution and run unit tests, use these
- commands::
+ To install the latest version of Unidecode from the Python package index, use
+ these commands::
+
+ $ pip install unidecode
+
+ To install Unidecode from the source distribution and run unit tests, use::
$ python setup.py install
$ python setup.py test
+ Performance notes
+ -----------------
+
+ By default, `unidecode` optimizes for the use case where most of the strings
+ passed to it are already ASCII-only and no transliteration is necessary (this
+ default might change in future versions).
+
+ For performance critical applications, two additional functions are exposed:
+
+ `unidecode_expect_ascii` is optimized for ASCII-only inputs (approximately 5
+ times faster than `unidecode_expect_nonascii` on 10 character strings, more on
+ longer strings), but slightly slower for non-ASCII inputs.
+
+ `unidecode_expect_nonascii` takes approximately the same amount of time on
+ ASCII and non-ASCII inputs, but is slightly faster for non-ASCII inputs than
+ `unidecode_expect_ascii`.
+
+ Apart from differences in run time, both functions produce identical results.
+ For most users of Unidecode, the difference in performance should be
+ negligible.
+
+
Source
------
@@ -136,7 +162,7 @@
Python code and later additions:
- Copyright 2015, Tomaz Solc <tomaz.solc(a)tablix.org>
+ Copyright 2016, Tomaz Solc <tomaz.solc(a)tablix.org>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Unidecode-0.04.18/setup.py new/Unidecode-0.04.19/setup.py
--- old/Unidecode-0.04.18/setup.py 2015-06-13 13:50:47.000000000 +0200
+++ new/Unidecode-0.04.19/setup.py 2016-01-21 17:37:21.000000000 +0100
@@ -7,7 +7,7 @@
return open(os.path.join(os.path.dirname(__file__), "README.rst")).read()
setup(name='Unidecode',
- version='0.04.18',
+ version='0.04.19',
description='ASCII transliterations of Unicode text',
license='GPL',
long_description=get_long_description(),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Unidecode-0.04.18/tests/test_unidecode.py new/Unidecode-0.04.19/tests/test_unidecode.py
--- old/Unidecode-0.04.18/tests/test_unidecode.py 2015-05-19 16:05:34.000000000 +0200
+++ new/Unidecode-0.04.19/tests/test_unidecode.py 2015-12-10 14:25:48.000000000 +0100
@@ -2,7 +2,7 @@
# vim:ts=4 sw=4 expandtab softtabstop=4
import unittest
import sys
-from unidecode import unidecode
+from unidecode import unidecode, unidecode_expect_ascii, unidecode_expect_nonascii
import warnings
# workaround for Python < 2.7
@@ -55,7 +55,7 @@
else:
return x.decode('unicode-escape')
-class TestUnidecode(unittest.TestCase):
+class BaseTestUnidecode():
@unittest.skipIf(sys.version_info[0] >= 3, "not python 2")
def test_ascii_warning(self):
wlog = WarningLogger()
@@ -63,7 +63,10 @@
for n in range(0,128):
t = chr(n)
- self.assertEqual(unidecode(t), t)
+
+ r = self.unidecode(t)
+ self.assertEqual(r, t)
+ self.assertEqual(type(r), str)
# Passing string objects to unidecode should raise a warning
self.assertEqual(128, len(wlog.log))
@@ -76,7 +79,10 @@
for n in range(0,128):
t = _chr(n)
- self.assertEqual(unidecode(t), t)
+
+ r = self.unidecode(t)
+ self.assertEqual(r, t)
+ self.assertEqual(type(r), str)
# unicode objects shouldn't raise warnings
self.assertEqual(0, len(wlog.log))
@@ -91,7 +97,7 @@
# Just check that it doesn't throw an exception
t = _chr(n)
- unidecode(t)
+ self.unidecode(t)
def test_surrogates(self):
wlog = WarningLogger()
@@ -99,7 +105,7 @@
for n in range(0xd800, 0xe000):
t = _chr(n)
- s = unidecode(t)
+ s = self.unidecode(t)
# Check that surrogate characters translate to nothing.
self.assertEqual('', s)
@@ -128,8 +134,8 @@
wlog = WarningLogger()
wlog.start("Surrogate character")
- a = unidecode(s)
- a_sp = unidecode(s_sp)
+ a = self.unidecode(s)
+ a_sp = self.unidecode(s_sp)
self.assertEqual('T', a)
@@ -142,7 +148,7 @@
# 1 sequence of a-z
for n in range(0, 26):
a = chr(ord('a') + n)
- b = unidecode(_chr(0x24d0 + n))
+ b = self.unidecode(_chr(0x24d0 + n))
self.assertEqual(b, a)
@@ -157,7 +163,7 @@
a = chr(ord('A') + n % 26)
else:
a = chr(ord('a') + n % 26)
- b = unidecode(_chr(n))
+ b = self.unidecode(_chr(n))
if not b:
empty += 1
@@ -171,7 +177,7 @@
# 5 consecutive sequences of 0-9
for n in range(0x1d7ce, 0x1d800):
a = chr(ord('0') + (n-0x1d7ce) % 10)
- b = unidecode(_chr(n))
+ b = self.unidecode(_chr(n))
self.assertEqual(b, a)
@@ -219,13 +225,13 @@
(_u('\ua500'),
''),
- # Table that has less than 256 entriees
+ # Table that has less than 256 entries
(_u('\u1eff'),
''),
]
for input, correct_output in TESTS:
- test_output = unidecode(input)
+ test_output = self.unidecode(input)
self.assertEqual(test_output, correct_output)
self.assertTrue(isinstance(test_output, str))
@@ -246,7 +252,7 @@
]
for input, correct_output in TESTS:
- test_output = unidecode(input)
+ test_output = self.unidecode(input)
self.assertEqual(test_output, correct_output)
self.assertTrue(isinstance(test_output, str))
@@ -455,7 +461,7 @@
else:
inp = ''.join(map(chr, utf8_input)).decode('utf8')
- output = unidecode(inp)
+ output = self.unidecode(inp)
self.assertEqual(correct_output, output)
@@ -478,7 +484,7 @@
]
for s in lower:
- o = unidecode(s)
+ o = self.unidecode(s)
self.assertEqual('the quick brown fox jumps over the lazy dog 1234567890', o)
@@ -498,9 +504,18 @@
]
for s in upper:
- o = unidecode(s)
+ o = self.unidecode(s)
self.assertEqual('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 1234567890', o)
+class TestUnidecode(BaseTestUnidecode, unittest.TestCase):
+ unidecode = staticmethod(unidecode)
+
+class TestUnidecodeExpectASCII(BaseTestUnidecode, unittest.TestCase):
+ unidecode = staticmethod(unidecode_expect_ascii)
+
+class TestUnidecodeExpectNonASCII(BaseTestUnidecode, unittest.TestCase):
+ unidecode = staticmethod(unidecode_expect_nonascii)
+
if __name__ == "__main__":
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Unidecode-0.04.18/unidecode/__init__.py new/Unidecode-0.04.19/unidecode/__init__.py
--- old/Unidecode-0.04.18/unidecode/__init__.py 2014-12-07 18:54:21.000000000 +0100
+++ new/Unidecode-0.04.19/unidecode/__init__.py 2015-12-10 14:25:48.000000000 +0100
@@ -19,19 +19,53 @@
Cache = {}
-def unidecode(string):
+
+def _warn_if_not_unicode(string):
+ if version_info[0] < 3 and not isinstance(string, unicode):
+ warnings.warn( "Argument %r is not an unicode object. "
+ "Passing an encoded string will likely have "
+ "unexpected results." % (type(string),),
+ RuntimeWarning, 2)
+
+
+def unidecode_expect_ascii(string):
"""Transliterate an Unicode object into an ASCII string
>>> unidecode(u"\u5317\u4EB0")
"Bei Jing "
+
+ This function first tries to convert the string using ASCII codec.
+ If it fails (because of non-ASCII characters), it falls back to
+ transliteration using the character tables.
+
+ This is approx. five times faster if the string only contains ASCII
+ characters, but slightly slower than using unidecode directly if non-ASCII
+ chars are present.
"""
- if version_info[0] < 3 and not isinstance(string, unicode):
- warnings.warn( "Argument %r is not an unicode object. "
- "Passing an encoded string will likely have "
- "unexpected results." % (type(string),),
- RuntimeWarning, 2)
+ _warn_if_not_unicode(string)
+ try:
+ bytestring = string.encode('ASCII')
+ except UnicodeEncodeError:
+ return _unidecode(string)
+ if version_info[0] >= 3:
+ return string
+ else:
+ return bytestring
+
+def unidecode_expect_nonascii(string):
+ """Transliterate an Unicode object into an ASCII string
+
+ >>> unidecode(u"\u5317\u4EB0")
+ "Bei Jing "
+ """
+
+ _warn_if_not_unicode(string)
+ return _unidecode(string)
+
+unidecode = unidecode_expect_ascii
+def _unidecode(string):
retval = []
for char in string:
1
0
Hello community,
here is the log from the commit of package q4wine for openSUSE:Factory checked in at 2016-01-26 10:15:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/q4wine (Old)
and /work/SRC/openSUSE:Factory/.q4wine.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "q4wine"
Changes:
--------
--- /work/SRC/openSUSE:Factory/q4wine/q4wine.changes 2016-01-12 16:13:00.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.q4wine.new/q4wine.changes 2016-01-26 10:15:07.000000000 +0100
@@ -1,0 +2,10 @@
+Thu Jan 14 20:19:08 UTC 2016 - lazy.kent(a)opensuse.org
+
+- Update to 1.2-r2.
+ * Added:
+ + Czech translation update.
+ * Fixed:
+ + QtSystemApplication library detection does not work well for
+ Qt5.
+
+-------------------------------------------------------------------
Old:
----
q4wine-1.2-r1.tar.bz2
New:
----
q4wine-1.2-r2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ q4wine.spec ++++++
--- /var/tmp/diff_new_pack.yrlo6r/_old 2016-01-26 10:15:08.000000000 +0100
+++ /var/tmp/diff_new_pack.yrlo6r/_new 2016-01-26 10:15:08.000000000 +0100
@@ -16,10 +16,10 @@
#
-%define my_fver 1.2-r1
+%define my_fver 1.2-r2
Name: q4wine
-Version: 1.2+r1
+Version: 1.2+r2
Release: 0
Summary: Qt4 GUI for WINE
License: GPL-3.0
++++++ q4wine-1.2-r1.tar.bz2 -> q4wine-1.2-r2.tar.bz2 ++++++
++++ 2410 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package f2fs-tools for openSUSE:Factory checked in at 2016-01-26 10:15:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/f2fs-tools (Old)
and /work/SRC/openSUSE:Factory/.f2fs-tools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "f2fs-tools"
Changes:
--------
--- /work/SRC/openSUSE:Factory/f2fs-tools/f2fs-tools.changes 2015-03-30 19:33:31.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.f2fs-tools.new/f2fs-tools.changes 2016-01-26 10:15:06.000000000 +0100
@@ -1,0 +2,6 @@
+Fri Jan 22 18:54:13 UTC 2016 - jengelh(a)inai.de
+
+- Update to new upstream release 1.6.0
+* Add a defrag utility
+
+-------------------------------------------------------------------
Old:
----
f2fs-tools-1.4.1.tar.xz
New:
----
f2fs-tools-1.6.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ f2fs-tools.spec ++++++
--- /var/tmp/diff_new_pack.Ol6S2c/_old 2016-01-26 10:15:07.000000000 +0100
+++ /var/tmp/diff_new_pack.Ol6S2c/_new 2016-01-26 10:15:07.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package f2fs-tools
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,17 +17,16 @@
Name: f2fs-tools
-%define lname libf2fs0
-Version: 1.4.1
+Version: 1.6.0
Release: 0
Summary: Utilities for the Flash-friendly Filesystem (F2FS)
License: GPL-2.0 and LGPL-2.1
Group: System/Filesystems
Url: http://f2fs-tools.sf.net/_(disused)
-#Snapshot: v1.4.1
+#Snapshot: v1.6.0
#Git-Clone: git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools
-#DL-URL: no location known - no tarballs provided
+#DL-URL: no pre-made tarballs provided
Source: %name-%version.tar.xz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: autoconf
@@ -53,8 +52,10 @@
%install
b="%buildroot"
%make_install sbindir="%_sbindir"
-# The devel file is quite useless ATM without public headers.
+# The devel files are quite useless at this time without public headers.
rm -f "$b/%_libdir"/*.{la,so}
+# This is a useless library which just incorporates mkfs verbatim
+rm -f "$b/%_libdir"/libf2fs_format*
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
@@ -63,7 +64,7 @@
%defattr(-,root,root)
%_sbindir/f2fstat
%_sbindir/*.f2fs
-%_libdir/libf2fs.so.0*
+%_libdir/libf2fs*.so.*
%_mandir/man8/*
%doc COPYING
++++++ f2fs-tools-1.4.1.tar.xz -> f2fs-tools-1.6.0.tar.xz ++++++
++++ 4338 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package cdemu-daemon for openSUSE:Factory checked in at 2016-01-26 10:15:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cdemu-daemon (Old)
and /work/SRC/openSUSE:Factory/.cdemu-daemon.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cdemu-daemon"
Changes:
--------
--- /work/SRC/openSUSE:Factory/cdemu-daemon/cdemu-daemon.changes 2016-01-12 16:13:59.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.cdemu-daemon.new/cdemu-daemon.changes 2016-01-26 10:15:04.000000000 +0100
@@ -1,0 +2,6 @@
+Fri Jan 22 18:48:26 UTC 2016 - jengelh(a)inai.de
+
+- Update to new upstream release 3.0.4
+* Ensure "disc_closed" variable is set accordingly
+
+-------------------------------------------------------------------
Old:
----
cdemu-daemon-3.0.3.tar.bz2
New:
----
cdemu-daemon-3.0.4.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cdemu-daemon.spec ++++++
--- /var/tmp/diff_new_pack.1c6cFL/_old 2016-01-26 10:15:05.000000000 +0100
+++ /var/tmp/diff_new_pack.1c6cFL/_new 2016-01-26 10:15:05.000000000 +0100
@@ -17,7 +17,7 @@
Name: cdemu-daemon
-Version: 3.0.3
+Version: 3.0.4
Release: 0
Summary: Device daemon for cdemu, a virtual CD-ROM device emulator
License: GPL-2.0+
++++++ cdemu-daemon-3.0.3.tar.bz2 -> cdemu-daemon-3.0.4.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cdemu-daemon-3.0.3/CMakeLists.txt new/cdemu-daemon-3.0.4/CMakeLists.txt
--- old/cdemu-daemon-3.0.3/CMakeLists.txt 2015-11-21 15:07:45.000000000 +0100
+++ new/cdemu-daemon-3.0.4/CMakeLists.txt 2015-12-21 22:45:13.000000000 +0100
@@ -4,7 +4,7 @@
project (cdemu-daemon C)
# Versioning
-set (CDEMU_DAEMON_VERSION 3.0.3)
+set (CDEMU_DAEMON_VERSION 3.0.4)
set (CDEMU_DAEMON_INTERFACE_VERSION_MAJOR 7)
set (CDEMU_DAEMON_INTERFACE_VERSION_MINOR 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cdemu-daemon-3.0.3/README new/cdemu-daemon-3.0.4/README
--- old/cdemu-daemon-3.0.3/README 2015-11-21 15:07:45.000000000 +0100
+++ new/cdemu-daemon-3.0.4/README 2015-12-21 22:45:13.000000000 +0100
@@ -1,5 +1,5 @@
CDEmu Daemon
-3.0.3
+3.0.4
~~~~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cdemu-daemon-3.0.3/debian/changelog new/cdemu-daemon-3.0.4/debian/changelog
--- old/cdemu-daemon-3.0.3/debian/changelog 2015-11-21 15:07:45.000000000 +0100
+++ new/cdemu-daemon-3.0.4/debian/changelog 2015-12-21 22:45:13.000000000 +0100
@@ -1,3 +1,7 @@
+cdemu-daemon (3.0.4-1) debian; urgency=low
+ * Updated to 3.0.4
+ -- Rok Mandeljc <rok.mandeljc(a)gmail.com> Mon, 21 Dec 2015 12:00:00 +0100
+
cdemu-daemon (3.0.3-1) debian; urgency=low
* Updated to 3.0.3
* Discontinue setting GID on the executable.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cdemu-daemon-3.0.3/src/device-load.c new/cdemu-daemon-3.0.4/src/device-load.c
--- old/cdemu-daemon-3.0.3/src/device-load.c 2015-11-21 15:07:45.000000000 +0100
+++ new/cdemu-daemon-3.0.4/src/device-load.c 2015-12-21 22:45:13.000000000 +0100
@@ -75,6 +75,7 @@
/* Mark loaded discs as non-writable */
self->priv->recordable_disc = FALSE;
self->priv->rewritable_disc = FALSE;
+ self->priv->disc_closed = TRUE;
/* Loading succeeded */
self->priv->loaded = TRUE;
@@ -182,6 +183,7 @@
/* Emulate 80-min CD-R or DVD+R SL for now */
self->priv->recordable_disc = TRUE;
self->priv->rewritable_disc = FALSE;
+ self->priv->disc_closed = FALSE;
mirage_disc_set_medium_type(self->priv->disc, medium_type);
self->priv->medium_capacity = medium_capacity;
1
0
Hello community,
here is the log from the commit of package libosmocore for openSUSE:Factory checked in at 2016-01-26 10:15:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libosmocore (Old)
and /work/SRC/openSUSE:Factory/.libosmocore.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libosmocore"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libosmocore/libosmocore.changes 2016-01-01 19:51:16.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libosmocore.new/libosmocore.changes 2016-01-26 10:15:03.000000000 +0100
@@ -1,0 +2,7 @@
+Fri Jan 22 18:08:57 UTC 2016 - jengelh(a)inai.de
+
+- Update to new upstream snapshot 0.9.0.58
+* Add bitvector functions and APN conversion functions
+- Add test.diff to resolve compiler warning
+
+-------------------------------------------------------------------
Old:
----
libosmocore-0.9.0.45.tar.xz
New:
----
libosmocore-0.9.0.58.tar.xz
test.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libosmocore.spec ++++++
--- /var/tmp/diff_new_pack.NDAq8l/_old 2016-01-26 10:15:04.000000000 +0100
+++ /var/tmp/diff_new_pack.NDAq8l/_new 2016-01-26 10:15:04.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libosmocore
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: libosmocore
-Version: 0.9.0.45
+Version: 0.9.0.58
Release: 0
Summary: Open Source Mobile Communications Core Library
License: GPL-2.0 and GPL-2.0+ and LGPL-3.0+ and AGPL-3.0+
@@ -25,9 +25,10 @@
Url: http://bb.osmocom.org/trac/wiki/libosmocore
#Git-Clone: git://git.osmocom.org/libosmocore
-#Snapshot: 0.9.0-45-ga2db75f
+#Snapshot: 0.9.0-58-gfb7e683
Source: %name-%version.tar.xz
-Patch4: osmo-pkgconfig.diff
+Patch1: osmo-pkgconfig.diff
+Patch2: test.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: autoconf
BuildRequires: automake >= 1.6
@@ -265,12 +266,13 @@
%prep
%setup -qn %name
-%patch -P 4 -p1
+%patch -P 1 -P 2 -p1
%build
echo "%version" >.tarball-version
autoreconf -fiv
-%configure --enable-shared --disable-static
+%configure --enable-shared --disable-static \
+ --includedir="%_includedir/%name"
make %{?_smp_mflags}
%install
@@ -279,7 +281,8 @@
find "$b/%_libdir" -type f -name "*.la" -delete
%check
-make %{?_smp_mflags} check
+# susceptible to timing issues
+make %{?_smp_mflags} check || :
%post -n libosmocodec0 -p /sbin/ldconfig
%postun -n libosmocodec0 -p /sbin/ldconfig
@@ -306,8 +309,9 @@
%files -n libosmocodec-devel
%defattr(-,root,root)
-%dir %_includedir/osmocom
-%_includedir/osmocom/codec/
+%dir %_includedir/%name
+%dir %_includedir/%name/osmocom
+%_includedir/%name/osmocom/codec/
%_libdir/libosmocodec.so
%_libdir/pkgconfig/libosmocodec.pc
@@ -317,8 +321,9 @@
%files -n libosmocore-devel
%defattr(-,root,root)
-%dir %_includedir/osmocom
-%_includedir/osmocom/core/
+%dir %_includedir/%name
+%dir %_includedir/%name/osmocom
+%_includedir/%name/osmocom/core/
%_libdir/libosmocore.so
%_libdir/pkgconfig/libosmocore.pc
@@ -328,8 +333,9 @@
%files -n libosmoctrl-devel
%defattr(-,root,root)
-%dir %_includedir/osmocom
-%_includedir/osmocom/ctrl/
+%dir %_includedir/%name
+%dir %_includedir/%name/osmocom
+%_includedir/%name/osmocom/ctrl/
%_libdir/libosmoctrl.so
%_libdir/pkgconfig/libosmoctrl.pc
@@ -339,8 +345,9 @@
%files -n libosmogb-devel
%defattr(-,root,root)
-%dir %_includedir/osmocom
-%_includedir/osmocom/gprs/
+%dir %_includedir/%name
+%dir %_includedir/%name/osmocom
+%_includedir/%name/osmocom/gprs/
%_libdir/libosmogb.so
%_libdir/pkgconfig/libosmogb.pc
@@ -350,9 +357,10 @@
%files -n libosmogsm-devel
%defattr(-,root,root)
-%dir %_includedir/osmocom
-%_includedir/osmocom/gsm/
-%_includedir/osmocom/crypt/
+%dir %_includedir/%name
+%dir %_includedir/%name/osmocom
+%_includedir/%name/osmocom/gsm/
+%_includedir/%name/osmocom/crypt/
%_libdir/libosmogsm.so
%_libdir/pkgconfig/libosmogsm.pc
@@ -362,8 +370,9 @@
%files -n libosmosim-devel
%defattr(-,root,root)
-%dir %_includedir/osmocom/
-%_includedir/osmocom/sim/
+%dir %_includedir/%name
+%dir %_includedir/%name/osmocom/
+%_includedir/%name/osmocom/sim/
%_libdir/libosmosim.so
%_libdir/pkgconfig/libosmosim.pc
@@ -373,8 +382,9 @@
%files -n libosmovty-devel
%defattr(-,root,root)
-%dir %_includedir/osmocom
-%_includedir/osmocom/vty/
+%dir %_includedir/%name
+%dir %_includedir/%name/osmocom
+%_includedir/%name/osmocom/vty/
%_libdir/libosmovty.so
%_libdir/pkgconfig/libosmovty.pc
++++++ libosmocore-0.9.0.45.tar.xz -> libosmocore-0.9.0.58.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/TODO-RELEASE new/libosmocore/TODO-RELEASE
--- old/libosmocore/TODO-RELEASE 2015-02-18 22:28:15.000000000 +0100
+++ new/libosmocore/TODO-RELEASE 2016-01-22 19:08:39.000000000 +0100
@@ -1 +1,2 @@
#library what description / commit summary line
+libosmocore change major external talloc dependency / internal talloc removal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/debian/rules new/libosmocore/debian/rules
--- old/libosmocore/debian/rules 2015-02-18 22:28:15.000000000 +0100
+++ new/libosmocore/debian/rules 2016-01-22 19:08:39.000000000 +0100
@@ -13,6 +13,9 @@
DEBVERS := $(shell echo '$(DEBIAN)' | cut -d- -f1)
VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/[+-].*//' -e 's/~//g')
+# Our tests want to override symbols, make it possible on Ubuntu
+export LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS | sed -e 's/-Wl,-Bsymbolic-functions//')
+
export DEB_BUILD_HARDENING=1
%:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/include/osmocom/core/bitvec.h new/libosmocore/include/osmocom/core/bitvec.h
--- old/libosmocore/include/osmocom/core/bitvec.h 2015-02-18 22:28:16.000000000 +0100
+++ new/libosmocore/include/osmocom/core/bitvec.h 2016-01-22 19:08:39.000000000 +0100
@@ -28,6 +28,14 @@
/*! \file bitvec.h
* \brief Osmocom bit vector abstraction
+ *
+ * These functions assume a MSB (most significant bit) first layout of the
+ * bits, so that for instance the 5 bit number abcde (a is MSB) can be
+ * embedded into a byte sequence like in xxxxxxab cdexxxxx. The bit count
+ * starts with the MSB, so the bits in a byte are numbered (MSB) 01234567 (LSB).
+ * Note that there are other incompatible encodings, like it is used
+ * for the EGPRS RLC data block headers (there the bits are numbered from LSB
+ * to MSB).
*/
#include <stdint.h>
@@ -63,5 +71,7 @@
int bitvec_get_uint(struct bitvec *bv, int num_bits);
int bitvec_find_bit_pos(const struct bitvec *bv, unsigned int n, enum bit_value val);
int bitvec_spare_padding(struct bitvec *bv, unsigned int up_to_bit);
+int bitvec_get_bytes(struct bitvec *bv, uint8_t *bytes, int count);
+int bitvec_set_bytes(struct bitvec *bv, const uint8_t *bytes, int count);
/*! @} */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/include/osmocom/core/msgb.h new/libosmocore/include/osmocom/core/msgb.h
--- old/libosmocore/include/osmocom/core/msgb.h 2015-12-23 18:54:23.000000000 +0100
+++ new/libosmocore/include/osmocom/core/msgb.h 2016-01-22 19:08:39.000000000 +0100
@@ -373,6 +373,8 @@
*/
static inline int msgb_trim(struct msgb *msg, int len)
{
+ if (len < 0)
+ MSGB_ABORT(msg, "Negative length is not allowed\n");
if (len > msg->data_len)
return -1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/include/osmocom/core/prim.h new/libosmocore/include/osmocom/core/prim.h
--- old/libosmocore/include/osmocom/core/prim.h 2015-12-23 18:54:23.000000000 +0100
+++ new/libosmocore/include/osmocom/core/prim.h 2016-01-22 19:08:39.000000000 +0100
@@ -17,10 +17,10 @@
PRIM_OP_REQUEST, /*!< \brief request */
PRIM_OP_RESPONSE, /*!< \brief response */
PRIM_OP_INDICATION, /*!< \brief indication */
- PRIM_OP_CONFIRM, /*!< \brief cofirm */
+ PRIM_OP_CONFIRM, /*!< \brief confirm */
};
-const struct value_string osmo_prim_op_names[5];
+extern const struct value_string osmo_prim_op_names[5];
#define _SAP_GSM_SHIFT 24
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/include/osmocom/gsm/apn.h new/libosmocore/include/osmocom/gsm/apn.h
--- old/libosmocore/include/osmocom/gsm/apn.h 2015-12-23 18:54:23.000000000 +0100
+++ new/libosmocore/include/osmocom/gsm/apn.h 2016-01-22 19:08:39.000000000 +0100
@@ -14,3 +14,6 @@
* static buffer. */
char *osmo_apn_qualify_from_imsi(const char *imsi,
const char *ni, int have_3dig_mnc);
+
+int osmo_apn_from_str(uint8_t *apn_enc, size_t max_apn_enc_len, const char *str);
+char * osmo_apn_to_str(char *out_str, const uint8_t *apn_enc, size_t apn_enc_len);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/src/bitvec.c new/libosmocore/src/bitvec.c
--- old/libosmocore/src/bitvec.c 2015-02-18 22:28:15.000000000 +0100
+++ new/libosmocore/src/bitvec.c 2016-01-22 19:08:39.000000000 +0100
@@ -1,6 +1,7 @@
/* bit vector utility routines */
/* (C) 2009 by Harald Welte <laforge(a)gnumonks.org>
+ * (C) 2015 by Sysmocom s.f.m.c. GmbH
*
* All Rights Reserved
*
@@ -30,6 +31,7 @@
#include <errno.h>
#include <stdint.h>
+#include <string.h>
#include <osmocom/core/bitvec.h>
@@ -261,4 +263,77 @@
return -1;
}
+/*! \brief get multiple bytes from current pos
+ * Assumes MSB first encoding.
+ * \param[in] bv bit vector
+ * \param[in] bytes array
+ * \param[in] count number of bytes to copy
+ */
+int bitvec_get_bytes(struct bitvec *bv, uint8_t *bytes, int count)
+{
+ int byte_offs = bytenum_from_bitnum(bv->cur_bit);
+ int bit_offs = bv->cur_bit % 8;
+ uint8_t c, last_c;
+ int i;
+ uint8_t *src;
+
+ if (byte_offs + count + (bit_offs ? 1 : 0) > bv->data_len)
+ return -EINVAL;
+
+ if (bit_offs == 0) {
+ memcpy(bytes, bv->data + byte_offs, count);
+ } else {
+ src = bv->data + byte_offs;
+ last_c = *(src++);
+ for (i = count; i > 0; i--) {
+ c = *(src++);
+ *(bytes++) =
+ (last_c << bit_offs) |
+ (c >> (8 - bit_offs));
+ last_c = c;
+ }
+ }
+
+ bv->cur_bit += count * 8;
+ return 0;
+}
+
+/*! \brief set multiple bytes at current pos
+ * Assumes MSB first encoding.
+ * \param[in] bv bit vector
+ * \param[in] bytes array
+ * \param[in] count number of bytes to copy
+ */
+int bitvec_set_bytes(struct bitvec *bv, const uint8_t *bytes, int count)
+{
+ int byte_offs = bytenum_from_bitnum(bv->cur_bit);
+ int bit_offs = bv->cur_bit % 8;
+ uint8_t c, last_c;
+ int i;
+ uint8_t *dst;
+
+ if (byte_offs + count + (bit_offs ? 1 : 0) > bv->data_len)
+ return -EINVAL;
+
+ if (bit_offs == 0) {
+ memcpy(bv->data + byte_offs, bytes, count);
+ } else if (count > 0) {
+ dst = bv->data + byte_offs;
+ /* Get lower bits of first dst byte */
+ last_c = *dst >> (8 - bit_offs);
+ for (i = count; i > 0; i--) {
+ c = *(bytes++);
+ *(dst++) =
+ (last_c << (8 - bit_offs)) |
+ (c >> bit_offs);
+ last_c = c;
+ }
+ /* Overwrite lower bits of N+1 dst byte */
+ *dst = (*dst & ((1 << (8 - bit_offs)) - 1)) |
+ (last_c << (8 - bit_offs));
+ }
+
+ bv->cur_bit += count * 8;
+ return 0;
+}
/*! @} */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/src/gsm/apn.c new/libosmocore/src/gsm/apn.c
--- old/libosmocore/src/gsm/apn.c 2015-09-10 22:55:22.000000000 +0200
+++ new/libosmocore/src/gsm/apn.c 2016-01-22 19:08:39.000000000 +0100
@@ -36,3 +36,78 @@
}
return osmo_apn_qualify(atoi(cbuf), atoi(nbuf), ni);
}
+
+/**
+ * Convert an encoded APN into a dot-separated string.
+ *
+ * \param out_str the destination buffer (size must be >= max(app_enc_len,1))
+ * \param apn_enc the encoded APN
+ * \param apn_enc_len the length of the encoded APN
+ *
+ * \returns out_str on success and NULL otherwise
+ */
+char * osmo_apn_to_str(char *out_str, const uint8_t *apn_enc, size_t apn_enc_len)
+{
+ char *str = out_str;
+ size_t rest_chars = apn_enc_len;
+
+ while (rest_chars > 0 && apn_enc[0]) {
+ size_t label_size = apn_enc[0];
+ if (label_size + 1 > rest_chars)
+ return NULL;
+
+ memmove(str, apn_enc + 1, label_size);
+ str += label_size;
+ rest_chars -= label_size + 1;
+ apn_enc += label_size + 1;
+
+ if (rest_chars)
+ *(str++) = '.';
+ }
+ str[0] = '\0';
+
+ return out_str;
+}
+
+/**
+ * Convert a dot-separated string into an encoded APN.
+ *
+ * \param apn_enc the encoded APN
+ * \param max_apn_enc_len the size of the apn_enc buffer
+ * \param str the source string
+ *
+ * \returns out_str on success and NULL otherwise
+ */
+int osmo_apn_from_str(uint8_t *apn_enc, size_t max_apn_enc_len, const char *str)
+{
+ uint8_t *last_len_field;
+ int len;
+
+ /* Can we even write the length field to the output? */
+ if (max_apn_enc_len == 0)
+ return -1;
+
+ /* Remember where we need to put the length once we know it */
+ last_len_field = apn_enc;
+ len = 1;
+ apn_enc += 1;
+
+ while (str[0]) {
+ if (len >= max_apn_enc_len)
+ return -1;
+
+ if (str[0] == '.') {
+ *last_len_field = (apn_enc - last_len_field) - 1;
+ last_len_field = apn_enc;
+ } else {
+ *apn_enc = str[0];
+ }
+ apn_enc += 1;
+ str += 1;
+ len += 1;
+ }
+
+ *last_len_field = (apn_enc - last_len_field) - 1;
+
+ return len;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/src/gsm/libosmogsm.map new/libosmocore/src/gsm/libosmogsm.map
--- old/libosmocore/src/gsm/libosmogsm.map 2015-12-23 18:54:23.000000000 +0100
+++ new/libosmocore/src/gsm/libosmogsm.map 2016-01-22 19:08:39.000000000 +0100
@@ -270,6 +270,8 @@
osmo_apn_qualify;
osmo_apn_qualify_from_imsi;
+osmo_apn_to_str;
+osmo_apn_from_str;
local: *;
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/src/msgb.c new/libosmocore/src/msgb.c
--- old/libosmocore/src/msgb.c 2015-12-23 18:54:23.000000000 +0100
+++ new/libosmocore/src/msgb.c 2016-01-22 19:08:39.000000000 +0100
@@ -28,6 +28,7 @@
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
+#include <inttypes.h>
#include <osmocom/core/msgb.h>
//#include <openbsc/gsm_data.h>
@@ -274,14 +275,15 @@
continue;
if (lxhs[i] < msg->data || lxhs[i] > msg->tail) {
nchars = snprintf(buf + buf_offs, sizeof(buf) - buf_offs,
- "(L%d=data%+d) ",
+ "(L%d=data%+" PRIdPTR ") ",
i+1, lxhs[i] - msg->data);
buf_offs += nchars;
continue;
}
if (lxhs[i] < start) {
nchars = snprintf(buf + buf_offs, sizeof(buf) - buf_offs,
- "(L%d%+d) ", i+1, start - lxhs[i]);
+ "(L%d%+" PRIdPTR ") ", i+1,
+ start - lxhs[i]);
buf_offs += nchars;
continue;
}
@@ -312,7 +314,7 @@
} else if (lxhs[i] <= msg->data + msg->data_len &&
lxhs[i] > msg->tail) {
nchars = snprintf(buf + buf_offs, sizeof(buf) - buf_offs,
- "(L%d=tail%+d) ",
+ "(L%d=tail%+" PRIdPTR ") ",
i+1, lxhs[i] - msg->tail);
} else
continue;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/tests/Makefile.am new/libosmocore/tests/Makefile.am
--- old/libosmocore/tests/Makefile.am 2015-12-23 18:54:23.000000000 +0100
+++ new/libosmocore/tests/Makefile.am 2016-01-22 19:08:39.000000000 +0100
@@ -7,10 +7,12 @@
conv/conv_test auth/milenage_test lapd/lapd_test \
gsm0808/gsm0808_test gsm0408/gsm0408_test \
gb/bssgp_fc_test gb/gprs_bssgp_test gb/gprs_ns_test \
- kasumi/kasumi_test logging/logging_test fr/fr_test \
+ gprs/gprs_test kasumi/kasumi_test \
+ logging/logging_test fr/fr_test \
loggingrb/loggingrb_test strrb/strrb_test \
vty/vty_test comp128/comp128_test utils/utils_test \
- smscb/gsm0341_test stats/stats_test
+ smscb/gsm0341_test stats/stats_test \
+ bitvec/bitvec_test msgb/msgb_test
if ENABLE_MSGFILE
check_PROGRAMS += msgfile/msgfile_test
@@ -37,6 +39,9 @@
bits_bitrev_test_SOURCES = bits/bitrev_test.c
bits_bitrev_test_LDADD = $(top_builddir)/src/libosmocore.la
+bitvec_bitvec_test_SOURCES = bitvec/bitvec_test.c
+bitvec_bitvec_test_LDADD = $(top_builddir)/src/libosmocore.la
+
conv_conv_test_SOURCES = conv/conv_test.c
conv_conv_test_LDADD = $(top_builddir)/src/libosmocore.la
@@ -46,9 +51,15 @@
gsm0408_gsm0408_test_SOURCES = gsm0408/gsm0408_test.c
gsm0408_gsm0408_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la
+gprs_gprs_test_SOURCES = gprs/gprs_test.c
+gprs_gprs_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la
+
lapd_lapd_test_SOURCES = lapd/lapd_test.c
lapd_lapd_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la
+msgb_msgb_test_SOURCES = msgb/msgb_test.c
+msgb_msgb_test_LDADD = $(top_builddir)/src/libosmocore.la
+
msgfile_msgfile_test_SOURCES = msgfile/msgfile_test.c
msgfile_msgfile_test_LDADD = $(top_builddir)/src/libosmocore.la
@@ -117,14 +128,15 @@
lapd/lapd_test.ok gsm0408/gsm0408_test.ok \
gsm0808/gsm0808_test.ok gb/bssgp_fc_tests.err \
gb/bssgp_fc_tests.ok gb/bssgp_fc_tests.sh \
- gb/gprs_bssgp_test.ok \
- gb/gprs_ns_test.ok kasumi/kasumi_test.ok \
+ gb/gprs_bssgp_test.ok gb/gprs_ns_test.ok \
+ gprs/gprs_test.ok kasumi/kasumi_test.ok \
msgfile/msgfile_test.ok msgfile/msgconfig.cfg \
logging/logging_test.ok logging/logging_test.err \
fr/fr_test.ok loggingrb/logging_test.ok \
loggingrb/logging_test.err strrb/strrb_test.ok \
vty/vty_test.ok comp128/comp128_test.ok \
- utils/utils_test.ok stats/stats_test.ok
+ utils/utils_test.ok stats/stats_test.ok \
+ bitvec/bitvec_test.ok msgb/msgb_test.ok
DISTCLEANFILES = atconfig
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/tests/bitvec/bitvec_test.c new/libosmocore/tests/bitvec/bitvec_test.c
--- old/libosmocore/tests/bitvec/bitvec_test.c 1970-01-01 01:00:00.000000000 +0100
+++ new/libosmocore/tests/bitvec/bitvec_test.c 2016-01-22 19:08:39.000000000 +0100
@@ -0,0 +1,62 @@
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+
+#include <osmocom/core/utils.h>
+#include <osmocom/core/bitvec.h>
+
+static void test_byte_ops()
+{
+ struct bitvec bv;
+ const uint8_t *in = (const uint8_t *)"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ uint8_t out[26 + 2];
+ uint8_t data[64];
+ int i;
+ int rc;
+ int in_size = strlen((const char *)in);
+
+ printf("=== start %s ===\n", __func__);
+
+ bv.data = data;
+ bv.data_len = sizeof(data);
+
+ for (i = 0; i < 32; i++) {
+ /* Write to bitvec */
+ memset(data, 0x00, sizeof(data));
+ bv.cur_bit = i;
+ rc = bitvec_set_uint(&bv, 0x7e, 8);
+ OSMO_ASSERT(rc >= 0);
+ rc = bitvec_set_bytes(&bv, in, in_size);
+ OSMO_ASSERT(rc >= 0);
+ rc = bitvec_set_uint(&bv, 0x7e, 8);
+ OSMO_ASSERT(rc >= 0);
+
+ fprintf(stderr, "bitvec: %s\n", osmo_hexdump(bv.data, bv.data_len));
+
+ /* Read from bitvec */
+ memset(out, 0xff, sizeof(out));
+ bv.cur_bit = i;
+ rc = bitvec_get_uint(&bv, 8);
+ OSMO_ASSERT(rc == 0x7e);
+ rc = bitvec_get_bytes(&bv, out + 1, in_size);
+ OSMO_ASSERT(rc >= 0);
+ rc = bitvec_get_uint(&bv, 8);
+ OSMO_ASSERT(rc == 0x7e);
+
+ fprintf(stderr, "out: %s\n", osmo_hexdump(out, sizeof(out)));
+
+ OSMO_ASSERT(out[0] == 0xff);
+ OSMO_ASSERT(out[in_size+1] == 0xff);
+ OSMO_ASSERT(memcmp(in, out + 1, in_size) == 0);
+ }
+
+ printf("=== end %s ===\n", __func__);
+}
+
+int main(int argc, char **argv)
+{
+ test_byte_ops();
+ return 0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/tests/bitvec/bitvec_test.ok new/libosmocore/tests/bitvec/bitvec_test.ok
--- old/libosmocore/tests/bitvec/bitvec_test.ok 1970-01-01 01:00:00.000000000 +0100
+++ new/libosmocore/tests/bitvec/bitvec_test.ok 2016-01-22 19:08:39.000000000 +0100
@@ -0,0 +1,2 @@
+=== start test_byte_ops ===
+=== end test_byte_ops ===
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/tests/gprs/gprs_test.c new/libosmocore/tests/gprs/gprs_test.c
--- old/libosmocore/tests/gprs/gprs_test.c 1970-01-01 01:00:00.000000000 +0100
+++ new/libosmocore/tests/gprs/gprs_test.c 2016-01-22 19:08:39.000000000 +0100
@@ -0,0 +1,122 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <inttypes.h>
+
+#include <osmocom/core/application.h>
+#include <osmocom/core/utils.h>
+#include <osmocom/core/logging.h>
+#include <osmocom/gsm/apn.h>
+
+static void apn_round_trip(const uint8_t *input, size_t len, const char *wanted_output)
+{
+ char output[len ? len : 1];
+ uint8_t encoded[len + 50];
+ char *out_str;
+ int enc_len;
+
+ /* decode and verify we have what we want */
+ out_str = osmo_apn_to_str(output, input, len);
+ OSMO_ASSERT(out_str);
+ OSMO_ASSERT(out_str == &output[0]);
+ OSMO_ASSERT(strlen(out_str) == strlen(wanted_output));
+ OSMO_ASSERT(strcmp(out_str, wanted_output) == 0);
+
+ /* encode and verify it */
+ if (len != 0) {
+ enc_len = osmo_apn_from_str(encoded, ARRAY_SIZE(encoded), wanted_output);
+ OSMO_ASSERT(enc_len == len);
+ OSMO_ASSERT(memcmp(encoded, input, enc_len) == 0);
+ } else {
+ enc_len = osmo_apn_from_str(encoded, 0, wanted_output);
+ OSMO_ASSERT(enc_len == -1);
+ }
+}
+
+static void test_gsm_03_03_apn(void)
+{
+
+ {
+ /* test invalid writes */
+ const uint8_t ref[10] = { 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF };
+ uint8_t output[10];
+ int enc_len;
+
+ memcpy(output, ref, ARRAY_SIZE(output));
+ enc_len = osmo_apn_from_str(output, 0, "");
+ OSMO_ASSERT(enc_len == -1);
+ OSMO_ASSERT(memcmp(ref, output, ARRAY_SIZE(ref)) == 0);
+
+ memcpy(output, ref, ARRAY_SIZE(output));
+ enc_len = osmo_apn_from_str(output, 0, "foo");
+ OSMO_ASSERT(enc_len == -1);
+ OSMO_ASSERT(memcmp(ref, output, ARRAY_SIZE(ref)) == 0);
+
+ memcpy(output, ref, ARRAY_SIZE(output));
+ enc_len = osmo_apn_from_str(output, 1, "foo");
+ OSMO_ASSERT(enc_len == -1);
+ OSMO_ASSERT(memcmp(ref + 1, output + 1, ARRAY_SIZE(ref) - 1) == 0);
+
+ memcpy(output, ref, ARRAY_SIZE(output));
+ enc_len = osmo_apn_from_str(output, 2, "foo");
+ OSMO_ASSERT(enc_len == -1);
+ OSMO_ASSERT(memcmp(ref + 2, output + 2, ARRAY_SIZE(ref) - 2) == 0);
+
+ memcpy(output, ref, ARRAY_SIZE(output));
+ enc_len = osmo_apn_from_str(output, 3, "foo");
+ OSMO_ASSERT(enc_len == -1);
+ OSMO_ASSERT(memcmp(ref + 3, output + 3, ARRAY_SIZE(ref) - 3) == 0);
+ }
+
+ {
+ /* single empty label */
+ uint8_t input[] = { 0x0 };
+ const char *output = "";
+ apn_round_trip(input, ARRAY_SIZE(input), output);
+ }
+
+ {
+ /* no label */
+ uint8_t input[] = { };
+ const char *output = "";
+ apn_round_trip(input, ARRAY_SIZE(input), output);
+ }
+
+ {
+ /* single label with A */
+ uint8_t input[] = { 0x1, 65 };
+ const char *output = "A";
+ apn_round_trip(input, ARRAY_SIZE(input), output);
+ OSMO_ASSERT(osmo_apn_to_str(NULL, input, ARRAY_SIZE(input) - 1) == NULL);
+ }
+
+ {
+ uint8_t input[] = { 0x3, 65, 66, 67, 0x2, 90, 122 };
+ const char *output = "ABC.Zz";
+ char tmp[strlen(output) + 1];
+ apn_round_trip(input, ARRAY_SIZE(input), output);
+ OSMO_ASSERT(osmo_apn_to_str(tmp, input, ARRAY_SIZE(input) - 1) == NULL);
+ OSMO_ASSERT(osmo_apn_to_str(tmp, input, ARRAY_SIZE(input) - 2) == NULL);
+ OSMO_ASSERT(osmo_apn_to_str(tmp, input, ARRAY_SIZE(input) - 4) == NULL);
+ OSMO_ASSERT(osmo_apn_to_str(tmp, input, ARRAY_SIZE(input) - 5) == NULL);
+ OSMO_ASSERT(osmo_apn_to_str(tmp, input, ARRAY_SIZE(input) - 6) == NULL);
+ }
+}
+
+const struct log_info_cat default_categories[] = {
+};
+
+static struct log_info info = {
+ .cat = default_categories,
+ .num_cat = ARRAY_SIZE(default_categories),
+};
+
+int main(int argc, char **argv)
+{
+ osmo_init_logging(&info);
+
+ test_gsm_03_03_apn();
+
+ printf("Done.\n");
+ return EXIT_SUCCESS;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/tests/gprs/gprs_test.ok new/libosmocore/tests/gprs/gprs_test.ok
--- old/libosmocore/tests/gprs/gprs_test.ok 1970-01-01 01:00:00.000000000 +0100
+++ new/libosmocore/tests/gprs/gprs_test.ok 2016-01-22 19:08:39.000000000 +0100
@@ -0,0 +1 @@
+Done.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/tests/kasumi/kasumi_test.c new/libosmocore/tests/kasumi/kasumi_test.c
--- old/libosmocore/tests/kasumi/kasumi_test.c 2015-02-18 22:28:15.000000000 +0100
+++ new/libosmocore/tests/kasumi/kasumi_test.c 2016-01-22 19:08:39.000000000 +0100
@@ -10,7 +10,7 @@
/* Test vectors are taken from TS 135 202 */
-inline int _compare_mem(uint8_t * x, uint8_t * y, size_t len)
+inline static int _compare_mem(uint8_t * x, uint8_t * y, size_t len)
{
if (0 != memcmp(x, y, len)) {
printf ("X: %s\t", osmo_hexdump_nospc(x, len));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/tests/msgb/msgb_test.c new/libosmocore/tests/msgb/msgb_test.c
--- old/libosmocore/tests/msgb/msgb_test.c 1970-01-01 01:00:00.000000000 +0100
+++ new/libosmocore/tests/msgb/msgb_test.c 2016-01-22 19:08:39.000000000 +0100
@@ -0,0 +1,294 @@
+/*
+ * (C) 2014 by On-Waves
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+#include <stdlib.h>
+#include <osmocom/core/application.h>
+#include <osmocom/core/logging.h>
+#include <osmocom/core/utils.h>
+#include <osmocom/core/msgb.h>
+#include <setjmp.h>
+
+#include <errno.h>
+
+#include <string.h>
+
+#define CHECK_RC(rc) \
+ if (rc != 0) { \
+ printf("Operation failed rc=%d on %s:%d\n", rc, __FILE__, __LINE__); \
+ abort(); \
+ }
+
+static jmp_buf jmp_env;
+static int jmp_env_valid = 0;
+static void osmo_panic_raise(const char *fmt, va_list args)
+{
+ /*
+ * The args can include pointer values which are not suitable for
+ * regression testing. So just write the (hopefully constant) format
+ * string to stdout and write the full message to stderr.
+ */
+ printf("%s", fmt);
+ vfprintf(stderr, fmt, args);
+ if (!jmp_env_valid)
+ abort();
+ longjmp(jmp_env, 1);
+}
+
+/* Note that this does not nest */
+#define OSMO_PANIC_TRY(pE) (osmo_panic_try(pE, setjmp(jmp_env)))
+
+static int osmo_panic_try(volatile int *exception, int setjmp_result)
+{
+ jmp_env_valid = setjmp_result == 0;
+ *exception = setjmp_result;
+
+ if (setjmp_result)
+ fprintf(stderr, "Exception caught: %d\n", setjmp_result);
+
+ return *exception == 0;
+}
+
+static void test_msgb_api()
+{
+ struct msgb *msg = msgb_alloc_headroom(4096, 128, "data");
+ unsigned char *cptr = NULL;
+ int rc;
+
+ printf("Testing the msgb API\n");
+
+ printf("Buffer: %s\n", msgb_hexdump(msg));
+ OSMO_ASSERT(msgb_test_invariant(msg));
+ cptr = msg->l1h = msgb_put(msg, 4);
+ printf("put(4) -> data%+d\n", cptr - msg->data);
+ printf("Buffer: %s\n", msgb_hexdump(msg));
+ OSMO_ASSERT(msgb_test_invariant(msg));
+ cptr = msg->l2h = msgb_put(msg, 4);
+ printf("put(4) -> data%+d\n", cptr - msg->data);
+ printf("Buffer: %s\n", msgb_hexdump(msg));
+ OSMO_ASSERT(msgb_test_invariant(msg));
+ cptr = msg->l3h = msgb_put(msg, 4);
+ printf("put(4) -> data%+d\n", cptr - msg->data);
+ printf("Buffer: %s\n", msgb_hexdump(msg));
+ OSMO_ASSERT(msgb_test_invariant(msg));
+ cptr = msg->l4h = msgb_put(msg, 4);
+ printf("put(4) -> data%+d\n", cptr - msg->data);
+ printf("Buffer: %s\n", msgb_hexdump(msg));
+ OSMO_ASSERT(msgb_test_invariant(msg));
+ OSMO_ASSERT(msgb_length(msg) == 16);
+ cptr = msgb_push(msg, 4);
+ printf("push(4) -> data%+d\n", cptr - msg->data);
+ printf("Buffer: %s\n", msgb_hexdump(msg));
+ OSMO_ASSERT(msgb_test_invariant(msg));
+ OSMO_ASSERT(msgb_length(msg) == 20);
+ rc = msgb_trim(msg, 16);
+ printf("trim(16) -> %d\n", rc);
+ CHECK_RC(rc);
+ OSMO_ASSERT(msgb_test_invariant(msg));
+ printf("Buffer: %s\n", msgb_hexdump(msg));
+ OSMO_ASSERT(msgb_length(msg) == 16);
+
+ cptr = msgb_get(msg, 4);
+ printf("get(4) -> data%+d\n", cptr - msg->data);
+ printf("Buffer: %s\n", msgb_hexdump(msg));
+ OSMO_ASSERT(msgb_test_invariant(msg));
+ OSMO_ASSERT(msgb_length(msg) == 12);
+
+ printf("Test msgb_hexdump\n");
+ msg->l1h = msg->head;
+ printf("Buffer: %s\n", msgb_hexdump(msg));
+ msg->l3h = msg->data;
+ printf("Buffer: %s\n", msgb_hexdump(msg));
+ msg->l3h = msg->head - 1;
+ printf("Buffer: %s\n", msgb_hexdump(msg));
+
+ msgb_free(msg);
+}
+
+static void test_msgb_api_errors()
+{
+ struct msgb *msg = msgb_alloc_headroom(4096, 128, "data");
+ volatile int e = 0;
+ int rc;
+
+ printf("Testing the msgb API error handling\n");
+
+ osmo_set_panic_handler(osmo_panic_raise);
+
+ if (OSMO_PANIC_TRY(&e))
+ msgb_trim(msg, -1);
+ OSMO_ASSERT(e != 0);
+
+ rc = msgb_trim(msg, 4096 + 500);
+ OSMO_ASSERT(rc == -1);
+
+ msgb_free(msg);
+ osmo_set_panic_handler(NULL);
+}
+
+static void test_msgb_copy()
+{
+ struct msgb *msg = msgb_alloc_headroom(4096, 128, "data");
+ struct msgb *msg2;
+ int i;
+
+ printf("Testing msgb_copy\n");
+
+ msg->l1h = msgb_put(msg, 20);
+ msg->l2h = msgb_put(msg, 20);
+ msg->l3h = msgb_put(msg, 20);
+ msg->l4h = msgb_put(msg, 20);
+
+ OSMO_ASSERT(msgb_length(msg) == 80);
+ for (i = 0; i < msgb_length(msg); i++)
+ msg->data[i] = (uint8_t)i;
+
+ msg2 = msgb_copy(msg, "copy");
+
+ OSMO_ASSERT(msgb_length(msg) == msgb_length(msg2));
+ OSMO_ASSERT(msgb_l1len(msg) == msgb_l1len(msg2));
+ OSMO_ASSERT(msgb_l2len(msg) == msgb_l2len(msg2));
+ OSMO_ASSERT(msgb_l3len(msg) == msgb_l3len(msg2));
+ OSMO_ASSERT(msg->tail - msg->l4h == msg2->tail - msg2->l4h);
+
+ for (i = 0; i < msgb_length(msg2); i++)
+ OSMO_ASSERT(msg2->data[i] == (uint8_t)i);
+
+ printf("Src: %s\n", msgb_hexdump(msg));
+ printf("Dst: %s\n", msgb_hexdump(msg));
+
+ msgb_free(msg);
+ msgb_free(msg2);
+}
+
+static void test_msgb_resize_area()
+{
+ struct msgb *msg = msgb_alloc_headroom(4096, 128, "data");
+ int rc;
+ volatile int e = 0;
+ int i, saved_i;
+ uint8_t *cptr, *old_l3h;
+
+ osmo_set_panic_handler(osmo_panic_raise);
+
+ rc = msgb_resize_area(msg, msg->data, 0, 0);
+ OSMO_ASSERT(rc >= 0);
+
+ if (OSMO_PANIC_TRY(&e))
+ msgb_resize_area(msg, NULL, 0, 0);
+ OSMO_ASSERT(e != 0);
+
+ if (OSMO_PANIC_TRY(&e))
+ msgb_resize_area(msg, NULL, (int)msg->data, 0);
+ OSMO_ASSERT(e != 0);
+
+ if (OSMO_PANIC_TRY(&e))
+ msgb_resize_area(msg, msg->data, 20, 0);
+ OSMO_ASSERT(e != 0);
+
+ if (OSMO_PANIC_TRY(&e))
+ msgb_resize_area(msg, msg->data, -1, 0);
+ OSMO_ASSERT(e != 0);
+
+ if (OSMO_PANIC_TRY(&e))
+ msgb_resize_area(msg, msg->data, 0, -1);
+ OSMO_ASSERT(e != 0);
+
+ printf("Testing msgb_resize_area\n");
+
+ msg->l1h = msgb_put(msg, 20);
+ msg->l2h = msgb_put(msg, 20);
+ msg->l3h = msgb_put(msg, 20);
+ msg->l4h = msgb_put(msg, 20);
+
+ for (i = 0; i < msgb_length(msg); i++)
+ msg->data[i] = (uint8_t)i;
+
+ printf("Original: %s\n", msgb_hexdump(msg));
+
+ /* Extend area */
+ saved_i = msg->l3h[0];
+ old_l3h = msg->l3h;
+
+ rc = msgb_resize_area(msg, msg->l2h, 20, 20 + 30);
+
+ /* Reset the undefined part to allow printing the buffer to stdout */
+ memset(old_l3h, 0, msg->l3h - old_l3h);
+
+ printf("Extended: %s\n", msgb_hexdump(msg));
+
+ OSMO_ASSERT(rc >= 0);
+ OSMO_ASSERT(msgb_length(msg) == 80 + 30);
+ OSMO_ASSERT(msgb_l1len(msg) == 80 + 30);
+ OSMO_ASSERT(msgb_l2len(msg) == 60 + 30);
+ OSMO_ASSERT(msgb_l3len(msg) == 40);
+ OSMO_ASSERT(msg->tail - msg->l4h == 20);
+
+ for (cptr = msgb_data(msg), i = 0; cptr < old_l3h; cptr++, i++)
+ OSMO_ASSERT(*cptr == (uint8_t)i);
+
+ for (cptr = msg->l3h, i = saved_i; cptr < msg->tail; cptr++, i++)
+ OSMO_ASSERT(*cptr == (uint8_t)i);
+
+ rc = msgb_resize_area(msg, msg->l2h, 50, 8000);
+ OSMO_ASSERT(rc == -1);
+
+ /* Shrink area */
+ saved_i = msg->l4h[0];
+ OSMO_ASSERT(saved_i == (uint8_t)(msg->l4h[-1] + 1));
+
+ rc = msgb_resize_area(msg, msg->l3h, 20, 10);
+
+ printf("Shrinked: %s\n", msgb_hexdump(msg));
+
+ OSMO_ASSERT(rc >= 0);
+ OSMO_ASSERT(msgb_length(msg) == 80 + 30 - 10);
+ OSMO_ASSERT(msgb_l1len(msg) == 80 + 30 - 10);
+ OSMO_ASSERT(msgb_l2len(msg) == 60 + 30 - 10);
+ OSMO_ASSERT(msgb_l3len(msg) == 40 - 10);
+ OSMO_ASSERT(msg->tail - msg->l4h == 20);
+
+ OSMO_ASSERT(msg->l4h[0] != msg->l4h[-1] - 1);
+
+ for (cptr = msg->l4h, i = saved_i; cptr < msg->tail; cptr++, i++)
+ OSMO_ASSERT(*cptr == (uint8_t)i);
+
+ rc = msgb_resize_area(msg, msg->l2h, 50, 8000);
+ OSMO_ASSERT(rc == -1);
+
+ msgb_free(msg);
+
+ osmo_set_panic_handler(NULL);
+}
+
+static struct log_info info = {};
+
+int main(int argc, char **argv)
+{
+ osmo_init_logging(&info);
+
+ test_msgb_api();
+ test_msgb_api_errors();
+ test_msgb_copy();
+ test_msgb_resize_area();
+
+ printf("Success.\n");
+
+ return 0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/tests/msgb/msgb_test.ok new/libosmocore/tests/msgb/msgb_test.ok
--- old/libosmocore/tests/msgb/msgb_test.ok 1970-01-01 01:00:00.000000000 +0100
+++ new/libosmocore/tests/msgb/msgb_test.ok 2016-01-22 19:08:39.000000000 +0100
@@ -0,0 +1,35 @@
+Testing the msgb API
+Buffer:
+put(4) -> data+0
+Buffer: [L1]> 00 00 00 00
+put(4) -> data+4
+Buffer: [L1]> 00 00 00 00 [L2]> 00 00 00 00
+put(4) -> data+8
+Buffer: [L1]> 00 00 00 00 [L2]> 00 00 00 00 [L3]> 00 00 00 00
+put(4) -> data+12
+Buffer: [L1]> 00 00 00 00 [L2]> 00 00 00 00 [L3]> 00 00 00 00 [L4]> 00 00 00 00
+push(4) -> data+0
+Buffer: 00 00 00 00 [L1]> 00 00 00 00 [L2]> 00 00 00 00 [L3]> 00 00 00 00 [L4]> 00 00 00 00
+trim(16) -> 0
+Buffer: 00 00 00 00 [L1]> 00 00 00 00 [L2]> 00 00 00 00 [L3]> 00 00 00 00 [L4]>
+get(4) -> data+12
+Buffer: 00 00 00 00 [L1]> 00 00 00 00 [L2]> 00 00 00 00 [L3]> (L4=tail+4)
+Test msgb_hexdump
+Buffer: (L1=data-124) 00 00 00 00 00 00 00 00 [L2]> 00 00 00 00 [L3]> (L4=tail+4)
+Buffer: (L1=data-124) 00 00 00 00 00 00 00 00 [L2]> (L3+8) 00 00 00 00 (L4=tail+4)
+Buffer: (L1=data-124) 00 00 00 00 00 00 00 00 [L2]> 00 00 00 00 (L3 out of range) (L4=tail+4)
+Testing the msgb API error handling
+msgb(%p): Negative length is not allowed
+Testing msgb_copy
+Src: [L1]> 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 [L2]> 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 [L3]> 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b [L4]> 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
+Dst: [L1]> 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 [L2]> 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 [L3]> 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b [L4]> 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
+msgb(%p): Sub area is not fully contained in the msg data
+msgb(%p): Sub area is not fully contained in the msg data
+msgb(%p): Sub area is not fully contained in the msg data
+msgb(%p): Negative sizes are not allowed
+msgb(%p): Negative sizes are not allowed
+Testing msgb_resize_area
+Original: [L1]> 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 [L2]> 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 [L3]> 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b [L4]> 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
+Extended: [L1]> 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 [L2]> 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [L3]> 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b [L4]> 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
+Shrinked: [L1]> 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 [L2]> 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [L3]> 28 29 2a 2b 2c 2d 2e 2f 30 31 [L4]> 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
+Success.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmocore/tests/testsuite.at new/libosmocore/tests/testsuite.at
--- old/libosmocore/tests/testsuite.at 2015-12-23 17:57:20.000000000 +0100
+++ new/libosmocore/tests/testsuite.at 2016-01-22 19:08:39.000000000 +0100
@@ -21,12 +21,24 @@
AT_CHECK([$abs_top_builddir/tests/bits/bitrev_test], [0], [expout])
AT_CLEANUP
+AT_SETUP([bitvec])
+AT_KEYWORDS([bitvec])
+cat $abs_srcdir/bitvec/bitvec_test.ok > expout
+AT_CHECK([$abs_top_builddir/tests/bitvec/bitvec_test], [0], [expout], [ignore])
+AT_CLEANUP
+
AT_SETUP([conv])
AT_KEYWORDS([conv])
cat $abs_srcdir/conv/conv_test.ok > expout
AT_CHECK([$abs_top_builddir/tests/conv/conv_test], [0], [expout])
AT_CLEANUP
+AT_SETUP([msgb])
+AT_KEYWORDS([msgb])
+cat $abs_srcdir/msgb/msgb_test.ok > expout
+AT_CHECK([$abs_top_builddir/tests/msgb/msgb_test], [0], [expout], [ignore])
+AT_CLEANUP
+
if ENABLE_MSGFILE
AT_SETUP([msgfile])
AT_KEYWORDS([msgfile])
@@ -84,6 +96,12 @@
AT_CHECK([$abs_top_builddir/tests/gsm0408/gsm0408_test], [0], [expout], [ignore])
AT_CLEANUP
+AT_SETUP([gprs])
+AT_KEYWORDS([gprs])
+cat $abs_srcdir/gprs/gprs_test.ok > expout
+AT_CHECK([$abs_top_builddir/tests/gprs/gprs_test], [0], [expout], [ignore])
+AT_CLEANUP
+
AT_SETUP([logging])
AT_KEYWORDS([logging])
cat $abs_srcdir/logging/logging_test.ok > expout
++++++ test.diff ++++++
resolve this compile warning hinting about bad code:
msgb/msgb_test.c:198:31: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
msgb_resize_area(msg, NULL, (int)msg->data, 0);
---
tests/msgb/msgb_test.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: libosmocore/tests/msgb/msgb_test.c
===================================================================
--- libosmocore.orig/tests/msgb/msgb_test.c
+++ libosmocore/tests/msgb/msgb_test.c
@@ -195,7 +195,7 @@ static void test_msgb_resize_area()
OSMO_ASSERT(e != 0);
if (OSMO_PANIC_TRY(&e))
- msgb_resize_area(msg, NULL, (int)msg->data, 0);
+ msgb_resize_area(msg, NULL, (intptr_t)msg->data, 0);
OSMO_ASSERT(e != 0);
if (OSMO_PANIC_TRY(&e))
1
0
Hello community,
here is the log from the commit of package syncthing-gtk for openSUSE:Factory checked in at 2016-01-26 10:15:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/syncthing-gtk (Old)
and /work/SRC/openSUSE:Factory/.syncthing-gtk.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "syncthing-gtk"
Changes:
--------
--- /work/SRC/openSUSE:Factory/syncthing-gtk/syncthing-gtk.changes 2015-11-08 11:26:52.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.syncthing-gtk.new/syncthing-gtk.changes 2016-01-26 10:15:02.000000000 +0100
@@ -1,0 +2,23 @@
+Fri Jan 22 17:07:22 UTC 2016 - sor.alexei(a)meowr.ru
+
+- Update to 0.8.2:
+ * Fix about window not showing in some languages.
+ * Support timestamps with GTM+0 or without timezone.
+ * And two random, mostly harmless error messages.
+
+-------------------------------------------------------------------
+Mon Dec 14 17:54:15 UTC 2015 - sor.alexei(a)meowr.ru
+
+- Update to 0.8.1 (changes since 0.8):
+ * Fix Syncthing version of remote node not shown.
+ * Missing definition causing UI problems and Appreport madness
+ on Ubuntu.
+ * Update syncthing-inotify version to 0.6.7.
+ * Add support for download placeholders in Nautilus plugin.
+ * Add localisation support with translations for Czech, German,
+ and Slovak languages.
+- Add syncthing-gtk-lang package.
+- Create {caja,nemo,nautilus}-extension-syncthing-gtk packages with
+ Caja, Nemo, and Nautilus plugins.
+
+-------------------------------------------------------------------
Old:
----
syncthing-gtk-0.8.tar.gz
New:
----
syncthing-gtk-0.8.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ syncthing-gtk.spec ++++++
--- /var/tmp/diff_new_pack.vZx4kA/_old 2016-01-26 10:15:03.000000000 +0100
+++ /var/tmp/diff_new_pack.vZx4kA/_new 2016-01-26 10:15:03.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package syncthing-gtk
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%global __requires_exclude typelib\\((Caja|Nautilus|Nemo)\\)
%define _name syncthing_gtk
Name: syncthing-gtk
-Version: 0.8
+Version: 0.8.2
Release: 0
Summary: Syncthing Gtk-based graphical interface
License: GPL-2.0+
@@ -27,22 +27,21 @@
Url: https://github.com/syncthing/syncthing-gtk
Source: https://github.com/syncthing/%{name}/archive/v%{version}.tar.gz#/%{name}-%{…
BuildRequires: fdupes
+BuildRequires: gobject-introspection-devel
BuildRequires: hicolor-icon-theme
BuildRequires: python-devel
BuildRequires: python-setuptools
+BuildRequires: syncthing >= 0.12
BuildRequires: update-desktop-files
-BuildRequires: pkgconfig(gobject-introspection-1.0)
Requires: psmisc
Requires: python-dateutil
Requires: python-gobject
Requires: python-gobject-cairo
Requires: syncthing >= 0.12
+Recommends: %{name}-lang
Recommends: libnotify
Recommends: librsvg
Recommends: python-pyinotify
-Suggests: python-caja
-Suggests: python-nautilus
-Suggests: python-nemo
BuildArch: noarch
%description
@@ -60,10 +59,56 @@
* First run wizard for initial configuration.
* Running Syncthing daemon in background.
* Half-automatic setup for new nodes and repositories.
- * Filesystem watching and instant synchronization using inotify.
- * Caja, Nautilus, and Nemo file managers integration.
+ * Filesystem watching and instant synchronisation using inotify.
+ * Caja, Nemo, and Nautilus file managers integration.
* Desktop notifications.
+%lang_package
+
+%package -n caja-extension-syncthing-gtk
+Summary: Syncthing-GTK+ client integrated into Caja
+Group: System/GUI/Other
+Requires: caja
+Requires: python-caja
+Requires: syncthing-gtk
+Supplements: packageand(%{name}:caja)
+
+%description -n caja-extension-syncthing-gtk
+Graphical user interface with notification area icon for Syncthing
+based on GTK+ and Python.
+
+This package integrates Syncthing-GTK+ seamlessly into Caja.
+
+%if 0%{?suse_version} > 1320
+%package -n nemo-extension-syncthing-gtk
+Summary: Syncthing-GTK+ client integrated into Nemo
+Group: System/GUI/Other
+Requires: nemo
+Requires: python-nemo
+Requires: syncthing-gtk
+Supplements: packageand(%{name}:nemo)
+
+%description -n nemo-extension-syncthing-gtk
+Graphical user interface with notification area icon for Syncthing
+based on GTK+ and Python.
+
+This package integrates Syncthing-GTK+ seamlessly into Nemo.
+%endif
+
+%package -n nautilus-extension-syncthing-gtk
+Summary: Syncthing-GTK+ client integrated into Nautilus
+Group: System/GUI/Other
+Requires: nautilus
+Requires: python-nautilus
+Requires: syncthing-gtk
+Supplements: packageand(%{name}:nautilus)
+
+%description -n nautilus-extension-syncthing-gtk
+Graphical user interface with notification area icon for Syncthing
+based on GTK+ and Python.
+
+This package integrates Syncthing-GTK+ seamlessly into Nautilus.
+
%prep
%setup -q
sed -i 's/^\(Exec=\).*$/\1%{name}/' %{name}.desktop
@@ -74,6 +119,15 @@
%install
python2 setup.py install --root=%{buildroot}
+install -Dm 0644 scripts/syncthing-plugin-caja.py \
+ %{buildroot}%{_datadir}/caja-python/extensions/syncthing-gtk.py
+%if 0%{?suse_version} > 1320
+install -Dm 0644 scripts/syncthing-plugin-nemo.py \
+ %{buildroot}%{_datadir}/nemo-python/extensions/syncthing-gtk.py
+%endif
+install -Dm 0644 scripts/syncthing-plugin-nautilus.py \
+ %{buildroot}%{_datadir}/nautilus-python/extensions/syncthing-gtk.py
+
# Add execution bit to scripts with shebangs and remove from others.
find %{buildroot} -type f -name "*.py" | while read py; do
if [[ "$(head -c2 "$py"; echo)" == "#!" ]]; then
@@ -84,7 +138,8 @@
done
%suse_update_desktop_file -r %{name} Network FileTransfer
-%fdupes %{buildroot}%{_datadir}
+%find_lang %{name}
+%fdupes %{buildroot}%{_datadir}/
%post
%desktop_database_post
@@ -107,4 +162,30 @@
%{_datadir}/icons/hicolor/*/emblems/emblem-*.png
%{_datadir}/pixmaps/*.png
+%files lang -f %{name}.lang
+%defattr(-,root,root)
+
+%files -n caja-extension-syncthing-gtk
+%defattr(-,root,root)
+%doc LICENSE README.md
+%dir %{_datadir}/caja-python/
+%dir %{_datadir}/caja-python/extensions/
+%{_datadir}/caja-python/extensions/syncthing-gtk.py
+
+%if 0%{?suse_version} > 1320
+%files -n nemo-extension-syncthing-gtk
+%defattr(-,root,root)
+%doc LICENSE README.md
+%dir %{_datadir}/nemo-python/
+%dir %{_datadir}/nemo-python/extensions/
+%{_datadir}/nemo-python/extensions/syncthing-gtk.py
+%endif
+
+%files -n nautilus-extension-syncthing-gtk
+%defattr(-,root,root)
+%doc LICENSE README.md
+%dir %{_datadir}/nautilus-python/
+%dir %{_datadir}/nautilus-python/extensions/
+%{_datadir}/nautilus-python/extensions/syncthing-gtk.py
+
%changelog
++++++ syncthing-gtk-0.8.tar.gz -> syncthing-gtk-0.8.2.tar.gz ++++++
++++ 10744 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package golang-packaging for openSUSE:Factory checked in at 2016-01-26 10:15:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/golang-packaging (Old)
and /work/SRC/openSUSE:Factory/.golang-packaging.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "golang-packaging"
Changes:
--------
--- /work/SRC/openSUSE:Factory/golang-packaging/golang-packaging.changes 2016-01-20 09:55:17.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.golang-packaging.new/golang-packaging.changes 2016-01-26 10:15:01.000000000 +0100
@@ -1,0 +2,12 @@
+Fri Jan 22 16:15:14 UTC 2016 - i(a)marguerite.su
+
+- update version 14.5
+ * fix a typo that prevent golang.req from running (fix #10)
+
+-------------------------------------------------------------------
+Fri Jan 22 07:23:07 UTC 2016 - i(a)marguerite.su
+
+- update version 14.4
+ * fix #5 on golang.req
+
+-------------------------------------------------------------------
Old:
----
golang-packaging-14.3.tar.gz
New:
----
golang-packaging-14.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ golang-packaging.spec ++++++
--- /var/tmp/diff_new_pack.s0Y2Vi/_old 2016-01-26 10:15:02.000000000 +0100
+++ /var/tmp/diff_new_pack.s0Y2Vi/_new 2016-01-26 10:15:02.000000000 +0100
@@ -17,7 +17,7 @@
Name: golang-packaging
-Version: 14.3
+Version: 14.5
Release: 0
Summary: A toolchain to help packaging golang
License: GPL-3.0
++++++ golang-packaging-14.3.tar.gz -> golang-packaging-14.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/golang-packaging-14.3/golang.attr new/golang-packaging-14.5/golang.attr
--- old/golang-packaging-14.3/golang.attr 2016-01-19 11:33:28.000000000 +0100
+++ new/golang-packaging-14.5/golang.attr 2016-01-22 17:12:34.000000000 +0100
@@ -1,3 +1,3 @@
-%__golang_requires %{_perfix}/lib/rpm/golang.req
+%__golang_requires %{_prefix}/lib/rpm/golang.req
%__golang_provides %{_prefix}/lib/rpm/golang.prov
%__golang_path ^(%{_prefix}/lib(64)?/go/contrib/pkg/linux_(386|amd64|ppc.*|arm.*)/.*\\.a|%{_bindir}/.*)$
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/golang-packaging-14.3/golang.req new/golang-packaging-14.5/golang.req
--- old/golang-packaging-14.3/golang.req 2016-01-19 11:33:28.000000000 +0100
+++ new/golang-packaging-14.5/golang.req 2016-01-22 17:12:34.000000000 +0100
@@ -2,14 +2,20 @@
require '/usr/lib/rpm/golang/rpmsysinfo.rb'
include RpmSysinfo
+buildroot = RpmSysinfo.get_buildroot
+contribdir = RpmSysinfo.get_go_contribdir
importpath = RpmSysinfo.get_go_importpath
# read stdin for filelist rpm feeds us for a (sub) package
filelist = []
ARGF.each do |l|
# if line has "*.a"
- # buildroot + go_contribdir + golang.org/x/text/collate/colltab.a
- filelist << l.strip! if ( l.index(/\.a\n$/) && ! l.index(/test|example/) )
+ # buildroot + go_contribdir + github.com/stretchr/testify/assert.a
+ if l.index(".a\n")
+ unless l.gsub(buildroot + contribdir + '/' + importpath,'').index(/test|example/)
+ filelist << l.strip!
+ end
+ end
end
requires = []
1
0
Hello community,
here is the log from the commit of package libfwevt for openSUSE:Factory checked in at 2016-01-26 10:14:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libfwevt (Old)
and /work/SRC/openSUSE:Factory/.libfwevt.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libfwevt"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libfwevt/libfwevt.changes 2015-01-30 15:00:38.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libfwevt.new/libfwevt.changes 2016-01-26 10:15:00.000000000 +0100
@@ -1,0 +2,7 @@
+Wed Jan 20 22:26:33 UTC 2016 - Greg.Freemyer(a)gmail.com
+
+- update to v0~20160103
+ * 2016 update
+ * Worked on format support
+
+-------------------------------------------------------------------
Old:
----
libfwevt-experimental-20150104.tar.gz
New:
----
libfwevt-experimental-20160103.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libfwevt.spec ++++++
--- /var/tmp/diff_new_pack.KTY0Y8/_old 2016-01-26 10:15:01.000000000 +0100
+++ /var/tmp/diff_new_pack.KTY0Y8/_new 2016-01-26 10:15:01.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libfwevt
#
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
%define lname libfwevt1
-%define timestamp 20150104
+%define timestamp 20160103
Name: libfwevt
Version: 0~%{timestamp}
Release: 0
++++++ libfwevt-experimental-20150104.tar.gz -> libfwevt-experimental-20160103.tar.gz ++++++
++++ 15659 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package spec-cleaner for openSUSE:Factory checked in at 2016-01-26 10:14:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/spec-cleaner (Old)
and /work/SRC/openSUSE:Factory/.spec-cleaner.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "spec-cleaner"
Changes:
--------
--- /work/SRC/openSUSE:Factory/spec-cleaner/spec-cleaner.changes 2015-09-19 06:55:37.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.spec-cleaner.new/spec-cleaner.changes 2016-01-26 10:14:59.000000000 +0100
@@ -1,0 +2,10 @@
+Fri Jan 22 13:42:39 UTC 2016 - tchvatal(a)suse.com
+
+- Version update to 0.7.5:
+ * Replace jobs in install section too
+ * Do not curlify gconf_schemas
+ * Work with defines in sections not just as global declarations
+ * Quote optflags properly when replacing RPM_OPT_FLAGS
+ * Do not add empty line after oneline scriptlet
+
+-------------------------------------------------------------------
Old:
----
spec-cleaner-0.7.4.tar.gz
New:
----
spec-cleaner-0.7.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ spec-cleaner.spec ++++++
--- /var/tmp/diff_new_pack.4FYDtB/_old 2016-01-26 10:14:59.000000000 +0100
+++ /var/tmp/diff_new_pack.4FYDtB/_new 2016-01-26 10:14:59.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package spec-cleaner
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2012 Vincent Untz <vuntz(a)opensuse.org>
#
# All modifications and additions to the file contributed by third parties
@@ -20,7 +20,7 @@
# This is used for Fedora, we need to sync this
%{!?py3_ver: %define py3_ver %{python3_version}}
Name: spec-cleaner
-Version: 0.7.4
+Version: 0.7.5
Release: 0
Summary: .spec file cleaner
License: BSD-3-Clause
++++++ spec-cleaner-0.7.4.tar.gz -> spec-cleaner-0.7.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/.gitignore new/spec-cleaner-spec-cleaner-0.7.5/.gitignore
--- old/spec-cleaner-spec-cleaner-0.7.4/.gitignore 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/.gitignore 2016-01-22 14:37:02.000000000 +0100
@@ -3,5 +3,6 @@
.eggs/
*.egg-info/
*.pyc
+.*.swp
.coverage
.coveralls.yml
Files old/spec-cleaner-spec-cleaner-0.7.4/data/.licenses_changes.txt.swp and new/spec-cleaner-spec-cleaner-0.7.5/data/.licenses_changes.txt.swp differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/data/excludes-bracketing.txt new/spec-cleaner-spec-cleaner-0.7.5/data/excludes-bracketing.txt
--- old/spec-cleaner-spec-cleaner-0.7.4/data/excludes-bracketing.txt 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/data/excludes-bracketing.txt 2016-01-22 14:37:02.000000000 +0100
@@ -25,6 +25,7 @@
files
files_fontsconf_file
fillup_[^\s]*
+find_gconf_schemas
find_lang
gem_install
gem_packages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/spec_cleaner/__init__.py new/spec-cleaner-spec-cleaner-0.7.5/spec_cleaner/__init__.py
--- old/spec-cleaner-spec-cleaner-0.7.4/spec_cleaner/__init__.py 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/spec_cleaner/__init__.py 2016-01-22 14:37:02.000000000 +0100
@@ -12,7 +12,7 @@
from .rpmcleaner import RpmSpecCleaner
-__version__ = '0.7.4'
+__version__ = '0.7.5'
def process_args(argv):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/spec_cleaner/rpmcleaner.py new/spec-cleaner-spec-cleaner-0.7.5/spec_cleaner/rpmcleaner.py
--- old/spec-cleaner-spec-cleaner-0.7.4/spec_cleaner/rpmcleaner.py 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/spec_cleaner/rpmcleaner.py 2016-01-22 14:37:02.000000000 +0100
@@ -95,7 +95,7 @@
# WARN: Keep in sync with rpmregexps for rpmpreamble section
if not isinstance(self.current_section, RpmPreamble) and \
not isinstance(self.current_section, RpmPackage):
- if self.reg.re_define.match(line) or self.reg.re_global.match(line) or \
+ if self.reg.re_global.match(line) or \
self.reg.re_bcond_with.match(line) or \
self.reg.re_requires.match(line) or self.reg.re_requires_phase.match(line) or \
self.reg.re_buildrequires.match(line) or self.reg.re_prereq.match(line) or \
@@ -113,6 +113,12 @@
self.reg.re_packager.match(line) or self.reg.re_debugpkg.match(line) or \
self.reg.re_requires_eq.match(line):
return True
+ # We can have local defined variables in phases
+ if not isinstance(self.current_section, RpmInstall) and \
+ not isinstance(self.current_section, RpmBuild) and \
+ not isinstance(self.current_section, RpmPrep):
+ if self.reg.re_define.match(line):
+ return True
return False
def _detect_new_section(self, line):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/spec_cleaner/rpminstall.py new/spec-cleaner-spec-cleaner-0.7.5/spec_cleaner/rpminstall.py
--- old/spec-cleaner-spec-cleaner-0.7.4/spec_cleaner/rpminstall.py 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/spec_cleaner/rpminstall.py 2016-01-22 14:37:02.000000000 +0100
@@ -21,6 +21,7 @@
if self.reg.re_clean.search(line):
return
+ line = self.reg.re_jobs.sub(parallel_arg, line)
# do not use install macros as we have trouble with it for now
# we can convert it later on
if self.reg.re_install.match(line):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/spec_cleaner/rpmregexp.py new/spec-cleaner-spec-cleaner-0.7.5/spec_cleaner/rpmregexp.py
--- old/spec-cleaner-spec-cleaner-0.7.4/spec_cleaner/rpmregexp.py 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/spec_cleaner/rpmregexp.py 2016-01-22 14:37:02.000000000 +0100
@@ -87,6 +87,8 @@
# rpmbuild
re_jobs = re.compile(r'%{(_smp_mflags|\?_smp_flags|\?jobs:\s*-j\s*%(jobs|{jobs}))}')
re_make = re.compile(r'(^|(.*\s)?)make($|(\s.*)?)')
+ re_optflags_quotes = re.compile(r'=\s*\${?RPM_OPT_FLAGS}?\s*$')
+ re_optflags = re.compile('\${?RPM_OPT_FLAGS}?')
# rpmcopyright
re_copyright = re.compile(r'^#\s*Copyright\ \(c\)\s*(.*)', re.IGNORECASE)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/spec_cleaner/rpmscriplets.py new/spec-cleaner-spec-cleaner-0.7.5/spec_cleaner/rpmscriplets.py
--- old/spec-cleaner-spec-cleaner-0.7.4/spec_cleaner/rpmscriplets.py 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/spec_cleaner/rpmscriplets.py 2016-01-22 14:37:02.000000000 +0100
@@ -12,10 +12,16 @@
def output(self, fout, newline=True):
# if we have 2 or 3 lines where last one is empty
nolines = len(self.lines)
+ if nolines == 1:
+ newline=False
if nolines == 2 or (nolines == 3 and self.lines[2] == ''):
- if self.lines[1] == '/sbin/ldconfig':
- pkg = self.lines[0]
- self.lines = []
- self.lines.append('{0} -p /sbin/ldconfig'.format(pkg))
- self.lines.append('')
+ newline=False
+ # if we have two lines and the 2nd is just whitespace, drop it
+ if self.lines[0] != '' and self.lines[1] == '':
+ self.lines.pop()
+ if len(self.lines) >= 2:
+ if self.lines[1] == '/sbin/ldconfig':
+ pkg = self.lines[0]
+ self.lines = []
+ self.lines.append('{0} -p /sbin/ldconfig'.format(pkg))
Section.output(self, fout, newline)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/spec_cleaner/rpmsection.py new/spec-cleaner-spec-cleaner-0.7.5/spec_cleaner/rpmsection.py
--- old/spec-cleaner-spec-cleaner-0.7.4/spec_cleaner/rpmsection.py 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/spec_cleaner/rpmsection.py 2016-01-22 14:37:02.000000000 +0100
@@ -142,8 +142,9 @@
"""
Replace RPM_OPT_FLAGS for %{optflags}
"""
- line = line.replace('${RPM_OPT_FLAGS}', '%{optflags}')
- line = line.replace('$RPM_OPT_FLAGS', '%{optflags}')
+ # if the optflags is the only thing then also add quotes around it
+ line = self.reg.re_optflags_quotes.sub('="%{optflags}"', line)
+ line = self.reg.re_optflags.sub('%{optflags}', line)
return line
def replace_known_dirs(self, line):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/tests/in/makeflags.spec new/spec-cleaner-spec-cleaner-0.7.5/tests/in/makeflags.spec
--- old/spec-cleaner-spec-cleaner-0.7.4/tests/in/makeflags.spec 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/tests/in/makeflags.spec 2016-01-22 14:37:02.000000000 +0100
@@ -1,4 +1,6 @@
%build
+export CFLAGS=${RPM_OPT_FLAGS}
+export CFLAGS="$RPM_OPT_FLAGS -blabla"
make
make PREFIX=/ \
STATIC=""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/tests/in/makeparams.spec new/spec-cleaner-spec-cleaner-0.7.5/tests/in/makeparams.spec
--- old/spec-cleaner-spec-cleaner-0.7.4/tests/in/makeparams.spec 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/tests/in/makeparams.spec 2016-01-22 14:37:02.000000000 +0100
@@ -58,3 +58,4 @@
make install DESTDIR=$RPM_BUILD_ROOT
%make_install
%{make_install}
+%{__make} install %{?jobs:-j%{jobs}}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/tests/in/scriplets.spec new/spec-cleaner-spec-cleaner-0.7.5/tests/in/scriplets.spec
--- old/spec-cleaner-spec-cleaner-0.7.4/tests/in/scriplets.spec 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/tests/in/scriplets.spec 2016-01-22 14:37:02.000000000 +0100
@@ -3,9 +3,9 @@
%post
/sbin/ldconfig
-%post -n %{_libname}
-/sbin/ldconfig
-
%post
/sbin/ldconfig
someothercommand
+
+%post -n %{_libname}
+/sbin/ldconfig
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/tests/in/sectiondefine.spec new/spec-cleaner-spec-cleaner-0.7.5/tests/in/sectiondefine.spec
--- old/spec-cleaner-spec-cleaner-0.7.4/tests/in/sectiondefine.spec 1970-01-01 01:00:00.000000000 +0100
+++ new/spec-cleaner-spec-cleaner-0.7.5/tests/in/sectiondefine.spec 2016-01-22 14:37:02.000000000 +0100
@@ -0,0 +1,27 @@
+%build
+# This is for build debugging purposed
+export OIIOINC=`echo $PWD`
+%define pwd $OIIOINC
+%define oiioinclude %{pwd}/src/include
+echo %{pwd}
+export CFLAGS="%{optflags}"
+export CXXFLAGS="%{optflags}"
+mkdir -p build
+cd build
+cmake \
+%ifarch ppc ppc64
+ -DNOTHREADS=ON \
+%endif
+ -DCMAKE_INSTALL_PREFIX=%{_prefix} \
+ -DLIB_INSTALL_DIR=%{_libdir} \
+ -DPYLIB_INSTALL_DIR=%{python_sitearch} \
+ -DINSTALL_DOCS:BOOL=ON \
+ -DDOC_INSTALL_DIR=%{_docdir}/%{name} \
+ -DINSTALL_FONTS:BOOL=ON \
+ -DBUILDSTATIC:BOOL=OFF \
+ -DLINKSTATIC:BOOL=OFF \
+ -DUSE_EXTERNAL_PUGIXML:BOOL=ON \
+ -DUSE_FFMPEG:BOOL=OFF \
+ -DUSE_OPENSSL:BOOL=ON \
+ -DCMAKE_SKIP_RPATH:BOOL=ON \
+ ..
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/tests/out/makeflags.spec new/spec-cleaner-spec-cleaner-0.7.5/tests/out/makeflags.spec
--- old/spec-cleaner-spec-cleaner-0.7.4/tests/out/makeflags.spec 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/tests/out/makeflags.spec 2016-01-22 14:37:02.000000000 +0100
@@ -17,6 +17,8 @@
%build
+export CFLAGS="%{optflags}"
+export CFLAGS="%{optflags} -blabla"
make %{?_smp_mflags}
make PREFIX=/ \
STATIC=""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/tests/out/makeparams.spec new/spec-cleaner-spec-cleaner-0.7.5/tests/out/makeparams.spec
--- old/spec-cleaner-spec-cleaner-0.7.4/tests/out/makeparams.spec 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/tests/out/makeparams.spec 2016-01-22 14:37:02.000000000 +0100
@@ -76,4 +76,5 @@
make DESTDIR=%{buildroot} install %{?_smp_mflags}
%make_install
%make_install
+make DESTDIR=%{buildroot} install %{?_smp_mflags}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/tests/out/scriplets.spec new/spec-cleaner-spec-cleaner-0.7.5/tests/out/scriplets.spec
--- old/spec-cleaner-spec-cleaner-0.7.4/tests/out/scriplets.spec 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/tests/out/scriplets.spec 2016-01-22 14:37:02.000000000 +0100
@@ -17,12 +17,9 @@
%post -n %{libname} -p /sbin/ldconfig
-
%post -p /sbin/ldconfig
-
-%post -n %{_libname} -p /sbin/ldconfig
-
%post
/sbin/ldconfig
someothercommand
+%post -n %{_libname} -p /sbin/ldconfig
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/tests/out/sectiondefine.spec new/spec-cleaner-spec-cleaner-0.7.5/tests/out/sectiondefine.spec
--- old/spec-cleaner-spec-cleaner-0.7.4/tests/out/sectiondefine.spec 1970-01-01 01:00:00.000000000 +0100
+++ new/spec-cleaner-spec-cleaner-0.7.5/tests/out/sectiondefine.spec 2016-01-22 14:37:02.000000000 +0100
@@ -0,0 +1,47 @@
+#
+# spec file for package sectiondefine
+#
+# Copyright (c) 2013 SUSE LINUX GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
+
+
+%build
+# This is for build debugging purposed
+export OIIOINC=`echo $PWD`
+%define pwd $OIIOINC
+%define oiioinclude %{pwd}/src/include
+echo %{pwd}
+export CFLAGS="%{optflags}"
+export CXXFLAGS="%{optflags}"
+mkdir -p build
+cd build
+# FIXME: you should use %%cmake macros
+cmake \
+%ifarch ppc ppc64
+ -DNOTHREADS=ON \
+%endif
+ -DCMAKE_INSTALL_PREFIX=%{_prefix} \
+ -DLIB_INSTALL_DIR=%{_libdir} \
+ -DPYLIB_INSTALL_DIR=%{python_sitearch} \
+ -DINSTALL_DOCS:BOOL=ON \
+ -DDOC_INSTALL_DIR=%{_docdir}/%{name} \
+ -DINSTALL_FONTS:BOOL=ON \
+ -DBUILDSTATIC:BOOL=OFF \
+ -DLINKSTATIC:BOOL=OFF \
+ -DUSE_EXTERNAL_PUGIXML:BOOL=ON \
+ -DUSE_FFMPEG:BOOL=OFF \
+ -DUSE_OPENSSL:BOOL=ON \
+ -DCMAKE_SKIP_RPATH:BOOL=ON \
+ ..
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/tests/out-minimal/makeflags.spec new/spec-cleaner-spec-cleaner-0.7.5/tests/out-minimal/makeflags.spec
--- old/spec-cleaner-spec-cleaner-0.7.4/tests/out-minimal/makeflags.spec 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/tests/out-minimal/makeflags.spec 2016-01-22 14:37:02.000000000 +0100
@@ -17,6 +17,8 @@
%build
+export CFLAGS="%{optflags}"
+export CFLAGS="%{optflags} -blabla"
make
make PREFIX=/ \
STATIC=""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/tests/out-minimal/makeparams.spec new/spec-cleaner-spec-cleaner-0.7.5/tests/out-minimal/makeparams.spec
--- old/spec-cleaner-spec-cleaner-0.7.4/tests/out-minimal/makeparams.spec 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/tests/out-minimal/makeparams.spec 2016-01-22 14:37:02.000000000 +0100
@@ -76,4 +76,5 @@
make install DESTDIR=%{buildroot}
%make_install
%make_install
+make install %{?jobs:-j%{jobs}}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/tests/out-minimal/scriplets.spec new/spec-cleaner-spec-cleaner-0.7.5/tests/out-minimal/scriplets.spec
--- old/spec-cleaner-spec-cleaner-0.7.4/tests/out-minimal/scriplets.spec 2015-09-17 14:36:03.000000000 +0200
+++ new/spec-cleaner-spec-cleaner-0.7.5/tests/out-minimal/scriplets.spec 2016-01-22 14:37:02.000000000 +0100
@@ -21,10 +21,10 @@
%post
/sbin/ldconfig
-%post -n %{_libname}
-/sbin/ldconfig
-
%post
/sbin/ldconfig
someothercommand
+%post -n %{_libname}
+/sbin/ldconfig
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.7.4/tests/out-minimal/sectiondefine.spec new/spec-cleaner-spec-cleaner-0.7.5/tests/out-minimal/sectiondefine.spec
--- old/spec-cleaner-spec-cleaner-0.7.4/tests/out-minimal/sectiondefine.spec 1970-01-01 01:00:00.000000000 +0100
+++ new/spec-cleaner-spec-cleaner-0.7.5/tests/out-minimal/sectiondefine.spec 2016-01-22 14:37:02.000000000 +0100
@@ -0,0 +1,46 @@
+#
+# spec file for package sectiondefine
+#
+# Copyright (c) 2013 SUSE LINUX GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
+
+
+%build
+# This is for build debugging purposed
+export OIIOINC=`echo $PWD`
+%define pwd $OIIOINC
+%define oiioinclude %{pwd}/src/include
+echo %{pwd}
+export CFLAGS="%{optflags}"
+export CXXFLAGS="%{optflags}"
+mkdir -p build
+cd build
+cmake \
+%ifarch ppc ppc64
+ -DNOTHREADS=ON \
+%endif
+ -DCMAKE_INSTALL_PREFIX=%{_prefix} \
+ -DLIB_INSTALL_DIR=%{_libdir} \
+ -DPYLIB_INSTALL_DIR=%{python_sitearch} \
+ -DINSTALL_DOCS:BOOL=ON \
+ -DDOC_INSTALL_DIR=%{_docdir}/%{name} \
+ -DINSTALL_FONTS:BOOL=ON \
+ -DBUILDSTATIC:BOOL=OFF \
+ -DLINKSTATIC:BOOL=OFF \
+ -DUSE_EXTERNAL_PUGIXML:BOOL=ON \
+ -DUSE_FFMPEG:BOOL=OFF \
+ -DUSE_OPENSSL:BOOL=ON \
+ -DCMAKE_SKIP_RPATH:BOOL=ON \
+ ..
+
1
0
Hello community,
here is the log from the commit of package mate-terminal for openSUSE:Factory checked in at 2016-01-26 10:14:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mate-terminal (Old)
and /work/SRC/openSUSE:Factory/.mate-terminal.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mate-terminal"
Changes:
--------
--- /work/SRC/openSUSE:Factory/mate-terminal/mate-terminal.changes 2015-12-06 07:43:14.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.mate-terminal.new/mate-terminal.changes 2016-01-26 10:14:58.000000000 +0100
@@ -1,0 +2,5 @@
+Fri Jan 22 12:34:23 UTC 2016 - sor.alexei(a)meowr.ru
+
+- Fix gschemas compilation in %post.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mate-terminal.spec ++++++
--- /var/tmp/diff_new_pack.sqUK50/_old 2016-01-26 10:14:59.000000000 +0100
+++ /var/tmp/diff_new_pack.sqUK50/_new 2016-01-26 10:14:59.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package mate-terminal
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -70,7 +70,7 @@
%post
%desktop_database_post
-%glib2_gsettings_schema_postun
+%glib2_gsettings_schema_post
%postun
%desktop_database_postun
1
0
Hello community,
here is the log from the commit of package spacefm for openSUSE:Factory checked in at 2016-01-26 10:14:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/spacefm (Old)
and /work/SRC/openSUSE:Factory/.spacefm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "spacefm"
Changes:
--------
--- /work/SRC/openSUSE:Factory/spacefm/spacefm.changes 2015-10-22 12:59:16.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.spacefm.new/spacefm.changes 2016-01-26 10:14:56.000000000 +0100
@@ -1,0 +2,27 @@
+Thu Jan 21 16:35:27 UTC 2016 - sor.alexei(a)meowr.ru
+
+- Update to 1.0.5:
+ * Recreate too small cached thumbnails.
+ * Read $XDG_TEMPLATES_DIR via glib for user-dirs.dirs support.
+ * Devices|Settings|Auto-Mount|Mount Dirs accept XDG vars, mkdir.
+ * Fix Paste in directory tree pastes to a wrong directory.
+ * Menu key in directory tree changes directory and acts on the
+ correct directory.
+ * [desktop] Show video thumbnails on desktop.
+ * Preferences add 384x384 icon size option.
+ * Obey StartupNotify when opening with an desktop application.
+ * configure.ac set G_LOG_DOMAIN.
+ * Fix main.c debug_gdk_threads_leave.
+ * Change detection, blacklist detect new files.
+ * Get mime type of only reg and link files, not char dev.
+ * Fix segfault in ptk_bookmark_view_reload_list to vfs_load_icon.
+ * Prevent filesystem find loop hang in new file/directory dialog.
+ * Fix crash on GTK+ icon theme reload; fix liststore memory leaks.
+ * udevil iso unmount device handler new whitelist/blacklist.
+ * Fix broken key shortcuts in Open|In Panel menu.
+ * Add lxqt-sudo and lxsu to list of su frontends.
+ * Add support for qterminal in list of terminals.
+ * Make Paste As Target paste canonicalised final target when
+ possible.
+
+-------------------------------------------------------------------
Old:
----
spacefm-1.0.4.tar.gz
New:
----
spacefm-1.0.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ spacefm.spec ++++++
--- /var/tmp/diff_new_pack.4iuRpa/_old 2016-01-26 10:14:57.000000000 +0100
+++ /var/tmp/diff_new_pack.4iuRpa/_new 2016-01-26 10:14:57.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package spacefm
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%bcond_with gtk2
%bcond_with restricted
Name: spacefm
-Version: 1.0.4
+Version: 1.0.5
Release: 0
Summary: Multi-panel tabbed file and desktop manager
License: GPL-3.0+ and LGPL-3.0+
++++++ spacefm-1.0.4.tar.gz -> spacefm-1.0.5.tar.gz ++++++
++++ 5960 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package yast2-live-installer for openSUSE:Factory checked in at 2016-01-26 10:14:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-live-installer (Old)
and /work/SRC/openSUSE:Factory/.yast2-live-installer.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-live-installer"
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-live-installer/yast2-live-installer.changes 2014-12-05 21:04:15.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-live-installer.new/yast2-live-installer.changes 2016-01-26 10:14:55.000000000 +0100
@@ -1,0 +2,6 @@
+Wed Jan 13 18:37:12 UTC 2016 - mfilka(a)suse.com
+
+- dropped unused inst client
+- 3.1.5
+
+-------------------------------------------------------------------
Old:
----
yast2-live-installer-3.1.4.tar.bz2
New:
----
yast2-live-installer-3.1.5.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-live-installer.spec ++++++
--- /var/tmp/diff_new_pack.5p4vf0/_old 2016-01-26 10:14:56.000000000 +0100
+++ /var/tmp/diff_new_pack.5p4vf0/_new 2016-01-26 10:14:56.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package yast2-live-installer
#
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: yast2-live-installer
-Version: 3.1.4
+Version: 3.1.5
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ yast2-live-installer-3.1.4.tar.bz2 -> yast2-live-installer-3.1.5.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-live-installer-3.1.4/CONTRIBUTING.md new/yast2-live-installer-3.1.5/CONTRIBUTING.md
--- old/yast2-live-installer-3.1.4/CONTRIBUTING.md 2014-12-04 11:13:02.000000000 +0100
+++ new/yast2-live-installer-3.1.5/CONTRIBUTING.md 2015-04-17 10:02:12.000000000 +0200
@@ -12,13 +12,13 @@
-----------
If you find a problem, please report it either using
-[Bugzilla](https://bugzilla.novell.com/enter_bug.cgi?format=guided&product=openSUSE+Factory&component=YaST2)
+[Bugzilla](https://bugzilla.suse.com/enter_bug.cgi?format=guided&product=openSUSE+Factory&component=YaST2)
or [GitHub issues](../../issues). (For Bugzilla, use the [simplified
registration](https://secure-www.novell.com/selfreg/jsp/createSimpleAccount…
if you don't have an account yet.)
If you find a problem, please report it either using
-[Bugzilla](https://bugzilla.novell.com/) or GitHub issues. We can't guarantee
+[Bugzilla](https://bugzilla.suse.com/) or GitHub issues. We can't guarantee
that every bug will be fixed, but we'll try.
When creating a bug report, please follow our [bug reporting
@@ -71,7 +71,7 @@
[widely used
conventions](http://tbaggery.com/2008/04/19/a-note-about-git-commit-message….
-If your commit is related to a bug in Buzgilla or an issue on GitHub, make sure
+If your commit is related to a bug in Bugzilla or an issue on GitHub, make sure
you mention it in the commit message for cross-reference. Use format like
bnc#775814 or gh#yast/yast-foo#42. See also [GitHub
autolinking](https://help.github.com/articles/github-flavored-markdown#refe…
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-live-installer-3.1.4/package/yast2-live-installer.changes new/yast2-live-installer-3.1.5/package/yast2-live-installer.changes
--- old/yast2-live-installer-3.1.4/package/yast2-live-installer.changes 2014-12-04 11:13:02.000000000 +0100
+++ new/yast2-live-installer-3.1.5/package/yast2-live-installer.changes 2016-01-22 10:56:14.000000000 +0100
@@ -1,4 +1,10 @@
-------------------------------------------------------------------
+Wed Jan 13 18:37:12 UTC 2016 - mfilka(a)suse.com
+
+- dropped unused inst client
+- 3.1.5
+
+-------------------------------------------------------------------
Thu Dec 4 09:50:25 UTC 2014 - jreidinger(a)suse.com
- remove X-KDE-Library from desktop file (bnc#899104)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-live-installer-3.1.4/package/yast2-live-installer.spec new/yast2-live-installer-3.1.5/package/yast2-live-installer.spec
--- old/yast2-live-installer-3.1.4/package/yast2-live-installer.spec 2014-12-04 11:13:02.000000000 +0100
+++ new/yast2-live-installer-3.1.5/package/yast2-live-installer.spec 2016-01-22 10:56:14.000000000 +0100
@@ -17,7 +17,7 @@
Name: yast2-live-installer
-Version: 3.1.4
+Version: 3.1.5
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-live-installer-3.1.4/src/Makefile.am new/yast2-live-installer-3.1.5/src/Makefile.am
--- old/yast2-live-installer-3.1.4/src/Makefile.am 2014-12-04 11:13:02.000000000 +0100
+++ new/yast2-live-installer-3.1.5/src/Makefile.am 2016-01-22 10:56:14.000000000 +0100
@@ -14,7 +14,6 @@
clients/live-installer.rb \
clients/inst_live_pre-proposal.rb \
clients/live_save_config_finish.rb \
- clients/inst_live_prepare_net_test.rb \
clients/inst_live_full_proposal.rb \
clients/live_runme_at_boot_finish.rb
@@ -23,4 +22,4 @@
EXTRA_DIST = $(module_DATA) $(client_DATA) $(desktop_DATA)
-include $(top_srcdir)/Makefile.am.common
\ No newline at end of file
+include $(top_srcdir)/Makefile.am.common
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-live-installer-3.1.4/src/clients/inst_live_prepare_net_test.rb new/yast2-live-installer-3.1.5/src/clients/inst_live_prepare_net_test.rb
--- old/yast2-live-installer-3.1.4/src/clients/inst_live_prepare_net_test.rb 2014-12-04 11:13:03.000000000 +0100
+++ new/yast2-live-installer-3.1.5/src/clients/inst_live_prepare_net_test.rb 1970-01-01 01:00:00.000000000 +0100
@@ -1,68 +0,0 @@
-# encoding: utf-8
-
-# ***************************************************************************
-#
-# Copyright (c) 2002 - 2012 Novell, Inc.
-# All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of version 2 of the GNU General Public License as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, contact Novell, Inc.
-#
-# To contact Novell about this file by physical or electronic mail,
-# you may find current contact information at www.novell.com
-#
-# ***************************************************************************
-# File: clients/inst_live_prepare_net_test.ycp
-# Package: Network configuration
-# Summary: Configuration dialogs for installation
-# Authors: Michal Svec <msvec(a)suse.cz>
-# Arvin Schnell <arvin(a)suse.de>
-#
-# $Id: inst_ask_net_test.ycp 27667 2006-02-07 10:33:15Z mvidner $
-module Yast
- class InstLivePrepareNetTestClient < Client
- def main
- Yast.import "UI"
-
- textdomain "network"
-
- Yast.import "GetInstArgs"
- Yast.import "InternetDevices"
- Yast.import "Mode"
-
- Yast.include self, "network/routines.rb"
- Yast.include self, "network/installation/dialogs.rb"
-
- return :auto if GetInstArgs.going_back
-
- if Mode.update
- # FIXME should be made somewhere else
-
- Builtins.y2milestone("starting network")
- SCR.Execute(path(".target.bash"), "/sbin/rcnetwork start")
- Builtins.sleep(1)
- end
-
- # Nothing to test
- if !InternetDevices.FindFastest
- Internet.do_test = false
- return :auto
- end
-
- :next
-
- # EOF
- end
- end
-end
-
-Yast::InstLivePrepareNetTestClient.new.main
1
0
Hello community,
here is the log from the commit of package nvml for openSUSE:Factory checked in at 2016-01-26 10:14:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nvml (Old)
and /work/SRC/openSUSE:Factory/.nvml.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nvml"
Changes:
--------
--- /work/SRC/openSUSE:Factory/nvml/nvml.changes 2015-10-20 00:08:54.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.nvml.new/nvml.changes 2016-01-26 10:14:54.000000000 +0100
@@ -1,0 +2,20 @@
+Fri Jan 22 09:16:47 UTC 2016 - jthumshirn(a)suse.com
+
+- Update to upstream version 0.4
+ This NVML version primarily focuses on improving code quality
+ and reliability. In addition to a couple of bug fixes,
+ the changes include:
+ - benchmarks for libpmemobj, libpmemblk and libvmem
+ - additional pmemobj tests and examples
+ - pool mapping address randomization
+ - added pmempool "rm" command
+ - eliminated libpmem dependency on libpthread
+ - enabled extra warnings
+ - minor performance improvements
+ Man pages are all complete.
+ This release is considered "Beta quality" by the team, having
+ been thoroughly validated, including significant performance analysis.
+ The pmempool command does not yet support "check" and "repair"
+ operations for pmemobj type pools.
+
+-------------------------------------------------------------------
Old:
----
0.3.tar.gz
New:
----
0.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nvml.spec ++++++
--- /var/tmp/diff_new_pack.P8UY3V/_old 2016-01-26 10:14:54.000000000 +0100
+++ /var/tmp/diff_new_pack.P8UY3V/_new 2016-01-26 10:14:55.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package nvml
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: nvml
-Version: 0.3
+Version: 0.4
Release: 0
Summary: Non-Volatile Memory Library
License: BSD-3-Clause
@@ -196,7 +196,7 @@
%install
b="%buildroot"
-make install DESTDIR="$b"
+make install DESTDIR="$b" prefix="%_prefix"
rm -f "$b/%_libdir"/*.a "$b/%_libdir/nvml_debug"/*.a
mkdir -p "$b/%_datadir/nvml"
cp utils/nvml.magic "$b/%_datadir/nvml/"
@@ -231,6 +231,7 @@
%_mandir/man1/pmempool-create.1*
%_mandir/man1/pmempool-dump.1*
%_mandir/man1/pmempool-check.1*
+%_mandir/man1/pmempool-rm.1*
%doc LICENSE
%files -n libpmem1
++++++ 0.3.tar.gz -> 0.4.tar.gz ++++++
++++ 50931 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package crmsh for openSUSE:Factory checked in at 2016-01-26 10:14:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/crmsh (Old)
and /work/SRC/openSUSE:Factory/.crmsh.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "crmsh"
Changes:
--------
--- /work/SRC/openSUSE:Factory/crmsh/crmsh.changes 2016-01-22 01:09:21.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.crmsh.new/crmsh.changes 2016-01-26 10:14:52.000000000 +0100
@@ -1,0 +2,12 @@
+Fri Jan 22 08:27:55 UTC 2016 - kgronlund(a)suse.com
+
+- Update to version 2.2.0+git.1453451184.2fbd420:
+ + high: history: Parse log lines without timestamp (bsc#955581)
+ + high: scripts: Improved OCFS2 cluster script (bsc#953984)
+ + high: scripts: Add NFS on LVM and DRBD cluster script (bsc#951132)
+ + high: scripts: Add LVM on DRBD cluster script (bsc#951132)
+ + high: scripts: fix broken cluster init script (bsc#963135)
+ + medium: scripts: Updated SBD cluster script
+ + medium: ui_configure: Rename show-property to get-property
+
+-------------------------------------------------------------------
Old:
----
crmsh-2.2.0+git.1452874360.0988ac4.tar.bz2
New:
----
crmsh-2.2.0+git.1453451184.2fbd420.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ crmsh.spec ++++++
--- /var/tmp/diff_new_pack.jhnNXK/_old 2016-01-26 10:14:53.000000000 +0100
+++ /var/tmp/diff_new_pack.jhnNXK/_new 2016-01-26 10:14:53.000000000 +0100
@@ -36,7 +36,7 @@
Summary: High Availability cluster command-line interface
License: GPL-2.0+
Group: %{pkg_group}
-Version: 2.2.0+git.1452874360.0988ac4
+Version: 2.2.0+git.1453451184.2fbd420
Release: 0
Url: http://crmsh.github.io
Source0: %{name}-%{version}.tar.bz2
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.jhnNXK/_old 2016-01-26 10:14:53.000000000 +0100
+++ /var/tmp/diff_new_pack.jhnNXK/_new 2016-01-26 10:14:53.000000000 +0100
@@ -1,4 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">git://github.com/ClusterLabs/crmsh.git</param>
- <param name="changesrevision">0988ac4d1d2b42a705640bd946f3eb9420258d65</param></service></servicedata>
\ No newline at end of file
+ <param name="changesrevision">2fbd420746e62e1b727472a2a1beb0a95b560b4a</param></service></servicedata>
\ No newline at end of file
++++++ crmsh-2.2.0+git.1452874360.0988ac4.tar.bz2 -> crmsh-2.2.0+git.1453451184.2fbd420.tar.bz2 ++++++
++++ 6238 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-apache-libcloud for openSUSE:Factory checked in at 2016-01-26 10:14:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-apache-libcloud (Old)
and /work/SRC/openSUSE:Factory/.python-apache-libcloud.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-apache-libcloud"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-apache-libcloud/python-apache-libcloud.changes 2016-01-01 19:50:25.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-apache-libcloud.new/python-apache-libcloud.changes 2016-01-26 10:14:50.000000000 +0100
@@ -1,0 +2,28 @@
+Wed Jan 20 20:58:45 UTC 2016 - aboe76(a)gmail.com
+
+- Updated to apache libcloud 0.20.1
+- General:
+ - Introduction of container based drivers for Docker, Rkt and Container-as-a-service providers
+ (LIBCLOUD-781, GITHUB-666) [Anthony Shaw]
+ - Introduce a new libcloud.backup API for Backup as a Service projects and products.
+ (GITHUB-621) [Anthony Shaw]
+ - Also retry failed HTTP(s) requests upon transient “read operation timed out” SSL error.
+ (GITHUB-556, LIBCLOUD-728) [Scott Kruger]
+ - Throw a more user-friendly exception if a client fails to establish SSL / TLS connection
+ with a server because of an unsupported SSL / TLS version. (GITHUB-682) [Tomaz Muraus]
+- Compute:
+ - Add ap-northeast-2 region to EC2 driver (South Korea) (GITHUB-681) [Anthony Shaw]
+ - Added Added volume type to EC2 volume extra to EC2 driver. (GITHUB-680) [Gennadiy Stas]
+ - Add LazyObject class that provides lazy-loading, see GCELicense for usage (LIBCLOUD-786,
+ GITHUB-665) [Scott Crunkleton]
+ - Added t2.nano instance type to EC2 Compute driver (GITHUB-663) [Anthony Shaw]
+ - Support for passing the image ID as a string instead of an instance of image when creating
+ nodes in Dimension Data driver. (GITHUB-664) [Anthony Shaw]
+- DNS:
+ - Add support for ‘health checks’ in Aurora DNS driver (GITHUB-672) [Wido den Hollander]
+ - Make sure ttl attribute is correctly parsed and added to the Record extra dictionary.
+ (GITHUB-675) [Wido den Hollander]
+ - Improve unit tests of Aurora DNS driver (GITHUB-679) [Wido den Hollander]
+
+
+-------------------------------------------------------------------
Old:
----
apache-libcloud-0.20.0.tar.bz2
New:
----
apache-libcloud-0.20.1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-apache-libcloud.spec ++++++
--- /var/tmp/diff_new_pack.1cCSXB/_old 2016-01-26 10:14:51.000000000 +0100
+++ /var/tmp/diff_new_pack.1cCSXB/_new 2016-01-26 10:14:51.000000000 +0100
@@ -17,7 +17,7 @@
Name: python-apache-libcloud
-Version: 0.20.0
+Version: 0.20.1
Release: 0
Summary: Abstract away differences among multiple cloud provider APIs
License: Apache-2.0
++++++ apache-libcloud-0.20.0.tar.bz2 -> apache-libcloud-0.20.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apache-libcloud-0.20.0/CHANGES.rst new/apache-libcloud-0.20.1/CHANGES.rst
--- old/apache-libcloud-0.20.0/CHANGES.rst 2015-12-09 11:58:20.000000000 +0100
+++ new/apache-libcloud-0.20.1/CHANGES.rst 2016-01-15 20:28:20.000000000 +0100
@@ -1,8 +1,18 @@
Changelog
=========
+Changes with Apache Libcloud 0.20.1
+-----------------------------------
+
+Compute
+~~~~~~~
+
+- [google] Allow for old and new style service account client email address
+ (LIBCLOUD-785)
+ [Hoang Phan]
+
Changes with Apache Libcloud 0.20.0
--------------------------------------------
+-----------------------------------
General
~~~~~~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apache-libcloud-0.20.0/PKG-INFO new/apache-libcloud-0.20.1/PKG-INFO
--- old/apache-libcloud-0.20.0/PKG-INFO 2015-12-09 12:16:32.000000000 +0100
+++ new/apache-libcloud-0.20.1/PKG-INFO 2016-01-15 20:31:53.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: apache-libcloud
-Version: 0.20.0
+Version: 0.20.1
Summary: A standard Python library that abstracts away differences among multiple cloud provider APIs. For more information and documentation, please see http://libcloud.apache.org
Home-page: http://libcloud.apache.org/
Author: Apache Software Foundation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apache-libcloud-0.20.0/apache_libcloud.egg-info/PKG-INFO new/apache-libcloud-0.20.1/apache_libcloud.egg-info/PKG-INFO
--- old/apache-libcloud-0.20.0/apache_libcloud.egg-info/PKG-INFO 2015-12-09 12:16:31.000000000 +0100
+++ new/apache-libcloud-0.20.1/apache_libcloud.egg-info/PKG-INFO 2016-01-15 20:31:53.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: apache-libcloud
-Version: 0.20.0
+Version: 0.20.1
Summary: A standard Python library that abstracts away differences among multiple cloud provider APIs. For more information and documentation, please see http://libcloud.apache.org
Home-page: http://libcloud.apache.org/
Author: Apache Software Foundation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apache-libcloud-0.20.0/libcloud/__init__.py new/apache-libcloud-0.20.1/libcloud/__init__.py
--- old/apache-libcloud-0.20.0/libcloud/__init__.py 2015-12-09 11:58:20.000000000 +0100
+++ new/apache-libcloud-0.20.1/libcloud/__init__.py 2016-01-15 16:31:36.000000000 +0100
@@ -20,7 +20,7 @@
"""
__all__ = ['__version__', 'enable_debug']
-__version__ = '0.20.0'
+__version__ = '0.20.1'
import os
import codecs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apache-libcloud-0.20.0/libcloud/common/dimensiondata.py new/apache-libcloud-0.20.1/libcloud/common/dimensiondata.py
--- old/apache-libcloud-0.20.0/libcloud/common/dimensiondata.py 2015-12-09 11:58:20.000000000 +0100
+++ new/apache-libcloud-0.20.1/libcloud/common/dimensiondata.py 2016-01-15 16:22:37.000000000 +0100
@@ -298,7 +298,7 @@
return (('<DimensionDataStatus: action=%s, request_time=%s, '
'user_name=%s, number_of_steps=%s, update_time=%s, '
'step_name=%s, step_number=%s, '
- 'step_percent_complete=%s, failure_reason=%s')
+ 'step_percent_complete=%s, failure_reason=%s>')
% (self.action, self.request_time, self.user_name,
self.number_of_steps, self.update_time, self.step_name,
self.step_number, self.step_percent_complete,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apache-libcloud-0.20.0/libcloud/common/google.py new/apache-libcloud-0.20.1/libcloud/common/google.py
--- old/apache-libcloud-0.20.0/libcloud/common/google.py 2015-12-09 11:58:20.000000000 +0100
+++ new/apache-libcloud-0.20.1/libcloud/common/google.py 2016-01-15 16:22:55.000000000 +0100
@@ -607,7 +607,7 @@
@staticmethod
def _is_sa(user_id):
- return user_id.endswith('@developer.gserviceaccount.com')
+ return user_id.endswith('.gserviceaccount.com')
class GoogleBaseConnection(ConnectionUserAndKey, PollingConnection):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apache-libcloud-0.20.0/libcloud/compute/drivers/dimensiondata.py new/apache-libcloud-0.20.1/libcloud/compute/drivers/dimensiondata.py
--- old/apache-libcloud-0.20.0/libcloud/compute/drivers/dimensiondata.py 2015-12-09 11:58:20.000000000 +0100
+++ new/apache-libcloud-0.20.1/libcloud/compute/drivers/dimensiondata.py 2016-01-15 16:22:24.000000000 +0100
@@ -873,7 +873,7 @@
block_id = None
for info in findall(response, 'info', TYPES_URN):
- if info.get('name') == 'publicIpBlockId':
+ if info.get('name') == 'ipBlockId':
block_id = info.get('value')
return self.ex_get_public_ip_block(block_id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apache-libcloud-0.20.0/libcloud/compute/drivers/vcloud.py new/apache-libcloud-0.20.1/libcloud/compute/drivers/vcloud.py
--- old/apache-libcloud-0.20.0/libcloud/compute/drivers/vcloud.py 2015-12-09 11:58:20.000000000 +0100
+++ new/apache-libcloud-0.20.1/libcloud/compute/drivers/vcloud.py 2016-01-15 16:22:15.000000000 +0100
@@ -848,7 +848,8 @@
'application/vnd.vmware.vcloud.orgList+xml')).get('href')
)
- self.connection.set_http_proxy(self.proxy_url)
+ if self.proxy_url:
+ self.connection.set_http_proxy(self.proxy_url)
self.connection.request(method='GET', url=org_list_url,
headers=self.add_default_headers({}))
body = ET.XML(self.connection.getresponse().read())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apache-libcloud-0.20.0/libcloud/dns/drivers/rackspace.py new/apache-libcloud-0.20.1/libcloud/dns/drivers/rackspace.py
--- old/apache-libcloud-0.20.0/libcloud/dns/drivers/rackspace.py 2015-12-09 11:58:20.000000000 +0100
+++ new/apache-libcloud-0.20.1/libcloud/dns/drivers/rackspace.py 2016-01-15 16:22:04.000000000 +0100
@@ -667,9 +667,10 @@
def _check_ptr_extra_fields(device_or_record):
- if not (getattr(device_or_record, 'extra') and
+ if not (hasattr(device_or_record, 'extra') and
+ isinstance(device_or_record.extra, dict) and
device_or_record.extra.get('uri') is not None and
device_or_record.extra.get('service_name') is not None):
raise LibcloudError("Can't create PTR Record for %s because it "
"doesn't have a 'uri' and 'service_name' in "
- "'extra'")
+ "'extra'" % device_or_record)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apache-libcloud-0.20.0/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_addPublicIpBlock.xml new/apache-libcloud-0.20.1/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_addPublicIpBlock.xml
--- old/apache-libcloud-0.20.0/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_addPublicIpBlock.xml 2015-12-09 11:58:20.000000000 +0100
+++ new/apache-libcloud-0.20.1/libcloud/test/compute/fixtures/dimensiondata/caas_2_1_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_network_addPublicIpBlock.xml 2016-01-15 16:22:24.000000000 +0100
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<response requestId="na/2014-04-14T13:37:20/62f06368-c3fb-11e3-b29c-001517c4643e" xmlns="urn:didata.com:api:cloud:types">
-<operation>ADD_PUBLIC_IP_BLOCK</operation>
-<responseCode>OK</responseCode>
-<message>Public IPv4 Address Block has been added successfully to Network Domain.</message>
-<info name="publicIpBlockId" value="4487241a-f0ca-11e3-9315-d4bed9b167ba"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<response xmlns="urn:didata.com:api:cloud:types" requestId="na/2015-12-20T16:59:48.842-05:00/28d362bb-249c-42b6-9236-ddd8729f332c">
+ <operation>ADD_PUBLIC_IP_BLOCK</operation>
+ <responseCode>OK</responseCode>
+ <message>Public IPv4 Address Block has been added successfully to Network Domain d3320077-c2ce-4523-8c65-d417e766077b.</message>
+ <info name="ipBlockId" value="4487241a-f0ca-11e3-9315-d4bed9b167ba"/>
</response>
\ No newline at end of file
1
0
Hello community,
here is the log from the commit of package python-psutil for openSUSE:Factory checked in at 2016-01-26 10:14:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-psutil (Old)
and /work/SRC/openSUSE:Factory/.python-psutil.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-psutil"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-psutil/python-psutil.changes 2015-12-01 09:19:44.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-psutil.new/python-psutil.changes 2016-01-26 10:14:49.000000000 +0100
@@ -1,0 +2,28 @@
+Thu Jan 21 09:01:36 UTC 2016 - michael(a)stroeder.com
+
+- update to version 3.4.2 (fixes for non-Linux platforms)
+
+-------------------------------------------------------------------
+Fri Jan 15 19:39:31 UTC 2016 - michael(a)stroeder.com
+
+- update to version 3.4.1
+
+**Enhancements**
+
+- #557: [NetBSD] added NetBSD support. (contributed by Ryo Onodera and
+ Thomas Klausner)
+- #708: [Linux] psutil.net_connections() and Process.connections() on Python 2
+ can be up to 3x faster in case of many connections.
+ Also psutil.Process.memory_maps() is slightly faster.
+- #718: process_iter() is now thread safe.
+
+**Bug fixes**
+
+- #714: [OpenBSD] virtual_memory().cached value was always set to 0.
+- #715: don't crash at import time if cpu_times() fail for some reason.
+- #717: [Linux] Process.open_files fails if deleted files still visible.
+- #722: [Linux] swap_memory() no longer crashes if sin/sout can't be determined
+ due to missing /proc/vmstat.
+- #724: [FreeBSD] virtual_memory().total is slightly incorrect.
+
+-------------------------------------------------------------------
Old:
----
psutil-3.3.0.tar.gz
New:
----
psutil-3.4.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-psutil.spec ++++++
--- /var/tmp/diff_new_pack.z6flGi/_old 2016-01-26 10:14:49.000000000 +0100
+++ /var/tmp/diff_new_pack.z6flGi/_new 2016-01-26 10:14:49.000000000 +0100
@@ -17,7 +17,7 @@
Name: python-psutil
-Version: 3.3.0
+Version: 3.4.2
Release: 0
Summary: A process utilities module for Python
License: BSD-3-Clause
++++++ psutil-3.3.0.tar.gz -> psutil-3.4.2.tar.gz ++++++
++++ 5426 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package salt for openSUSE:Factory checked in at 2016-01-26 10:14:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/salt (Old)
and /work/SRC/openSUSE:Factory/.salt.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "salt"
Changes:
--------
--- /work/SRC/openSUSE:Factory/salt/salt.changes 2015-12-23 08:49:48.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.salt.new/salt.changes 2016-01-26 10:14:45.000000000 +0100
@@ -1,0 +2,26 @@
+Fri Jan 15 13:16:46 UTC 2016 - dmacvicar(a)suse.de
+
+- Fix zypper module info_available on SLE-11
+ * add salt-2015.8-zypper-info.patch
+ * https://github.com/saltstack/salt/pull/30384
+- zypper/pkg: add package attributes filtering
+ * add salt-2015.8-pkg-zypper-attr-filtering.patch
+ * https://github.com/saltstack/salt/pull/30267
+- Remove obsoleted patches and fixes:
+ * 0001-Add-rpm.minimal_info-fix-rpm.info.patch
+ * 0002-Reduce-information-returned-from-pkg.info_installed.patch
+ * Remove require on glibc-locale (bsc#959572)
+
+-------------------------------------------------------------------
+Wed Jan 13 12:03:06 UTC 2016 - dmacvicar(a)suse.de
+
+- Add missing return data to scheduled jobs
+ * add salt-2015.8-schedule-ret.patch for
+ * https://github.com/saltstack/salt/pull/30246
+
+-------------------------------------------------------------------
+Mon Dec 21 14:06:27 UTC 2015 - kkaempf(a)suse.com
+
+- Update zypper-utf-8.patch for Python 2.6
+
+-------------------------------------------------------------------
Old:
----
0001-Add-rpm.minimal_info-fix-rpm.info.patch
0002-Reduce-information-returned-from-pkg.info_installed.patch
New:
----
salt-2015.8-pkg-zypper-attr-filtering.patch
salt-2015.8-schedule-ret.patch
salt-2015.8-zypper-info.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ salt.spec ++++++
--- /var/tmp/diff_new_pack.Bpkufl/_old 2016-01-26 10:14:46.000000000 +0100
+++ /var/tmp/diff_new_pack.Bpkufl/_new 2016-01-26 10:14:46.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package salt
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -53,11 +53,12 @@
Patch3: 1efe484309a5c776974e723f3da0f5181f4bdb86.patch
# PATCH-FIX-OPENSUSE detect bad UTF-8 in package header, bsc#958350
Patch4: zypper-utf-8.patch
-# PATCH-FIX-OPENSUSE report epoch and architecture
-Patch5: 0001-Add-rpm.minimal_info-fix-rpm.info.patch
-# PATCH-FIX-OPENSUSE use minimal_info for pkg.info_installed
-Patch6: 0002-Reduce-information-returned-from-pkg.info_installed.patch
-
+# PATCH-FIX-UPSTREAM https://github.com/saltstack/salt/pull/30246
+Patch5: salt-2015.8-schedule-ret.patch
+# PATCH-FIX-UPSTREAM https://github.com/saltstack/salt/pull/30267
+Patch6: salt-2015.8-pkg-zypper-attr-filtering.patch
+# PATCH-FIX-UPSTREAM https://github.com/saltstack/salt/pull/30384
+Patch7: salt-2015.8-zypper-info.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: logrotate
BuildRequires: python
@@ -105,8 +106,6 @@
%if 0%{?suse_version}
Requires(pre): %fillup_prereq
Requires(pre): pwdutils
-# bsc#959572
-Requires: glibc-locale
%endif
Requires: logrotate
Requires: python
@@ -405,6 +404,7 @@
%patch4 -p1
%patch5 -p1
%patch6 -p1
+%patch7 -p1
%build
python setup.py --salt-transport=both build
++++++ salt-2015.8-pkg-zypper-attr-filtering.patch ++++++
diff --git a/salt/modules/rpm.py b/salt/modules/rpm.py
index 7810e22..51c72c9 100644
--- a/salt/modules/rpm.py
+++ b/salt/modules/rpm.py
@@ -8,7 +8,6 @@ from __future__ import absolute_import
import logging
import os
import re
-import time
import datetime
# Import Salt libs
@@ -399,24 +398,20 @@ def diff(package, path):
return res
-def _pkg_time_to_iso(pkg_time):
- '''
- Convert package time to ISO 8601.
-
- :param pkg_time:
- :return:
- '''
- ptime = time.strptime(pkg_time, '%a %d %b %Y %H:%M:%S %p %Z')
- return datetime.datetime(ptime.tm_year, ptime.tm_mon, ptime.tm_mday,
- ptime.tm_hour, ptime.tm_min, ptime.tm_sec).isoformat() + "Z"
-
-
-def info(*packages):
+def info(*packages, **attr):
'''
Return a detailed package(s) summary information.
If no packages specified, all packages will be returned.
:param packages:
+
+ :param attr:
+ Comma-separated package attributes. If no 'attr' is specified, all available attributes returned.
+
+ Valid attributes are:
+ version, vendor, release, build_date, build_date_time_t, install_date, install_date_time_t,
+ build_host, group, source_rpm, arch, epoch, size, license, signature, packager, url, summary, description.
+
:return:
CLI example:
@@ -424,30 +419,59 @@ def info(*packages):
.. code-block:: bash
salt '*' lowpkg.info apache2 bash
+ salt '*' lowpkg.info apache2 bash attr=version
+ salt '*' lowpkg.info apache2 bash attr=version,build_date_iso,size
'''
cmd = packages and "rpm -q {0}".format(' '.join(packages)) or "rpm -qa"
- # Locale needs to be en_US instead of C, because RPM otherwise will yank the timezone from the timestamps
- call = __salt__['cmd.run_all'](cmd + (" --queryformat 'Name: %{NAME}\n"
- "Relocations: %|PREFIXES?{[%{PREFIXES} ]}:{(not relocatable)}|\n"
- "Version: %{VERSION}\n"
- "Vendor: %{VENDOR}\n"
- "Release: %{RELEASE}\n"
- "Build Date: %{BUILDTIME:date}\n"
- "Install Date: %|INSTALLTIME?{%{INSTALLTIME:date}}:{(not installed)}|\n"
- "Build Host: %{BUILDHOST}\n"
- "Group: %{GROUP}\n"
- "Source RPM: %{SOURCERPM}\n"
- "Size: %{LONGSIZE}\n"
- "%|LICENSE?{License: %{LICENSE}\n}|"
- "Signature: %|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:{%|SIGGPG?{%{SIGGPG:pgpsig}}:{%|SIGPGP?{%{SIGPGP:pgpsig}}:{(none)}|}|}|}|\n"
- "%|PACKAGER?{Packager: %{PACKAGER}\n}|"
- "%|URL?{URL: %{URL}\n}|"
- "Summary: %{SUMMARY}\n"
- "Description:\n%{DESCRIPTION}\n"
- "-----\n'"),
- output_loglevel='trace', env={'LC_ALL': 'en_US', 'TZ': 'UTC'}, clean_env=True)
+ # Construct query format
+ attr_map = {
+ "name": "name: %{NAME}\\n",
+ "relocations": "relocations: %|PREFIXES?{[%{PREFIXES} ]}:{(not relocatable)}|\\n",
+ "version": "version: %{VERSION}\\n",
+ "vendor": "vendor: %{VENDOR}\\n",
+ "release": "release: %{RELEASE}\\n",
+ "epoch": "%|EPOCH?{epoch: %{EPOCH}\\n}|",
+ "build_date_time_t": "build_date_time_t: %{BUILDTIME}\\n",
+ "build_date": "build_date: %{BUILDTIME}\\n",
+ "install_date_time_t": "install_date_time_t: %|INSTALLTIME?{%{INSTALLTIME}}:{(not installed)}|\\n",
+ "install_date": "install_date: %|INSTALLTIME?{%{INSTALLTIME}}:{(not installed)}|\\n",
+ "build_host": "build_host: %{BUILDHOST}\\n",
+ "group": "group: %{GROUP}\\n",
+ "source_rpm": "source_rpm: %{SOURCERPM}\\n",
+ "size": "size: %{LONGSIZE}\\n",
+ "arch": "arch: %{ARCH}\\n",
+ "license": "%|LICENSE?{license: %{LICENSE}\\n}|",
+ "signature": "signature: %|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:"
+ "{%|SIGGPG?{%{SIGGPG:pgpsig}}:{%|SIGPGP?{%{SIGPGP:pgpsig}}:{(none)}|}|}|}|\\n",
+ "packager": "%|PACKAGER?{packager: %{PACKAGER}\\n}|",
+ "url": "%|URL?{url: %{URL}\\n}|",
+ "summary": "summary: %{SUMMARY}\\n",
+ "description": "description:\\n%{DESCRIPTION}\\n",
+ }
+
+ attr = attr.get('attr', None) and attr['attr'].split(",") or None
+ query = list()
+ if attr:
+ for attr_k in attr:
+ if attr_k in attr_map and attr_k != 'description':
+ query.append(attr_map[attr_k])
+ if not query:
+ raise CommandExecutionError('No valid attributes found.')
+ if 'name' not in attr:
+ attr.append('name')
+ query.append(attr_map['name'])
+ else:
+ for attr_k, attr_v in attr_map.iteritems():
+ if attr_k != 'description':
+ query.append(attr_v)
+ if attr and 'description' in attr or not attr:
+ query.append(attr_map['description'])
+ query.append("-----\\n")
+
+ call = __salt__['cmd.run_all'](cmd + (" --queryformat '{0}'".format(''.join(query))),
+ output_loglevel='trace', env={'TZ': 'UTC'}, clean_env=True)
if call['retcode'] != 0:
comment = ''
if 'stderr' in call:
@@ -477,17 +501,31 @@ def info(*packages):
if len(line) != 2:
continue
key, value = line
- key = key.replace(' ', '_').lower()
if key == 'description':
descr_marker = True
continue
if key == 'name':
pkg_name = value
+
+ # Convert Unix ticks into ISO time format
if key in ['build_date', 'install_date']:
- value = _pkg_time_to_iso(value)
- if key != 'description' and value:
+ try:
+ pkg_data[key] = datetime.datetime.fromtimestamp(int(value)).isoformat() + "Z"
+ except ValueError:
+ log.warning('Could not convert "{0}" into Unix time'.format(value))
+ continue
+
+ # Convert Unix ticks into an Integer
+ if key in ['build_date_time_t', 'install_date_time_t']:
+ try:
+ pkg_data[key] = int(value)
+ except ValueError:
+ log.warning('Could not convert "{0}" into Unix time'.format(value))
+ continue
+ if key not in ['description', 'name'] and value:
pkg_data[key] = value
- pkg_data['description'] = os.linesep.join(descr)
+ if attr and 'description' in attr or not attr:
+ pkg_data['description'] = os.linesep.join(descr)
if pkg_name:
ret[pkg_name] = pkg_data
diff --git a/salt/modules/zypper.py b/salt/modules/zypper.py
index 84b5d51..ccba713 100644
--- a/salt/modules/zypper.py
+++ b/salt/modules/zypper.py
@@ -96,19 +96,32 @@ def list_upgrades(refresh=True):
list_updates = salt.utils.alias_function(list_upgrades, 'list_updates')
-def info_installed(*names):
+def info_installed(*names, **attr):
'''
Return the information of the named package(s), installed on the system.
+ :param names:
+ Names of the packages to get information about.
+
+ :param attr:
+ Comma-separated package attributes. If no 'attr' is specified, all available attributes returned.
+
+ Valid attributes are:
+ version, vendor, release, build_date, build_date_time_t, install_date, install_date_time_t,
+ build_host, group, source_rpm, arch, epoch, size, license, signature, packager, url,
+ summary, description.
+
CLI example:
.. code-block:: bash
salt '*' pkg.info_installed <package1>
salt '*' pkg.info_installed <package1> <package2> <package3> ...
+ salt '*' pkg.info_installed <package1> attr=version,vendor
+ salt '*' pkg.info_installed <package1> <package2> <package3> ... attr=version,vendor
'''
ret = dict()
- for pkg_name, pkg_nfo in __salt__['lowpkg.info'](*names).items():
+ for pkg_name, pkg_nfo in __salt__['lowpkg.info'](*names, **attr).items():
t_nfo = dict()
# Translate dpkg-specific keys to a common structure
for key, value in pkg_nfo.items():
++++++ salt-2015.8-schedule-ret.patch ++++++
diff --git a/salt/utils/schedule.py b/salt/utils/schedule.py
index 4458202..cae5fcf 100644
--- a/salt/utils/schedule.py
+++ b/salt/utils/schedule.py
@@ -482,24 +482,24 @@ class Schedule(object):
func = None
if func not in self.functions:
log.info(
- 'Invalid function: {0} in job {1}. Ignoring.'.format(
+ 'Invalid function: {0} in scheduled job {1}.'.format(
func, name
)
)
+
+ if 'name' not in data:
+ data['name'] = name
+ log.info(
+ 'Running Job: {0}.'.format(name)
+ )
+ if self.opts.get('multiprocessing', True):
+ thread_cls = multiprocessing.Process
else:
- if 'name' not in data:
- data['name'] = name
- log.info(
- 'Running Job: {0}.'.format(name)
- )
- if self.opts.get('multiprocessing', True):
- thread_cls = multiprocessing.Process
- else:
- thread_cls = threading.Thread
- proc = thread_cls(target=self.handle_func, args=(func, data))
- proc.start()
- if self.opts.get('multiprocessing', True):
- proc.join()
+ thread_cls = threading.Thread
+ proc = thread_cls(target=self.handle_func, args=(func, data))
+ proc.start()
+ if self.opts.get('multiprocessing', True):
+ proc.join()
def enable_schedule(self):
'''
@@ -642,33 +642,39 @@ class Schedule(object):
except OSError:
log.info('Unable to remove file: {0}.'.format(fn_))
- salt.utils.daemonize_if(self.opts)
+ try:
+ salt.utils.daemonize_if(self.opts)
- ret['pid'] = os.getpid()
+ ret['pid'] = os.getpid()
- if 'jid_include' not in data or data['jid_include']:
- log.debug('schedule.handle_func: adding this job to the jobcache '
- 'with data {0}'.format(ret))
- # write this to /var/cache/salt/minion/proc
- with salt.utils.fopen(proc_fn, 'w+b') as fp_:
- fp_.write(salt.payload.Serial(self.opts).dumps(ret))
-
- args = tuple()
- if 'args' in data:
- args = data['args']
-
- kwargs = {}
- if 'kwargs' in data:
- kwargs = data['kwargs']
- # if the func support **kwargs, lets pack in the pub data we have
- # TODO: pack the *same* pub data as a minion?
- argspec = salt.utils.args.get_function_argspec(self.functions[func])
- if argspec.keywords:
- # this function accepts **kwargs, pack in the publish data
- for key, val in six.iteritems(ret):
- kwargs['__pub_{0}'.format(key)] = val
+ if 'jid_include' not in data or data['jid_include']:
+ log.debug('schedule.handle_func: adding this job to the jobcache '
+ 'with data {0}'.format(ret))
+ # write this to /var/cache/salt/minion/proc
+ with salt.utils.fopen(proc_fn, 'w+b') as fp_:
+ fp_.write(salt.payload.Serial(self.opts).dumps(ret))
+
+ args = tuple()
+ if 'args' in data:
+ args = data['args']
+
+ kwargs = {}
+ if 'kwargs' in data:
+ kwargs = data['kwargs']
+
+ if func not in self.functions:
+ ret['return'] = self.functions.missing_fun_string(func)
+ salt.utils.error.raise_error(
+ message=self.functions.missing_fun_string(func))
+
+ # if the func support **kwargs, lets pack in the pub data we have
+ # TODO: pack the *same* pub data as a minion?
+ argspec = salt.utils.args.get_function_argspec(self.functions[func])
+ if argspec.keywords:
+ # this function accepts **kwargs, pack in the publish data
+ for key, val in six.iteritems(ret):
+ kwargs['__pub_{0}'.format(key)] = val
- try:
ret['return'] = self.functions[func](*args, **kwargs)
data_returner = data.get('returner', None)
@@ -694,28 +700,34 @@ class Schedule(object):
)
)
- # Only attempt to return data to the master
- # if the scheduled job is running on a minion.
- if '__role' in self.opts and self.opts['__role'] == 'minion':
- if 'return_job' in data and not data['return_job']:
- pass
- else:
- # Send back to master so the job is included in the job list
- mret = ret.copy()
- mret['jid'] = 'req'
- channel = salt.transport.Channel.factory(self.opts, usage='salt_schedule')
- load = {'cmd': '_return', 'id': self.opts['id']}
- for key, value in six.iteritems(mret):
- load[key] = value
- channel.send(load)
-
+ ret['retcode'] = self.functions.pack['__context__']['retcode']
+ ret['success'] = True
except Exception:
log.exception("Unhandled exception running {0}".format(ret['fun']))
# Although catch-all exception handlers are bad, the exception here
# is to let the exception bubble up to the top of the thread context,
# where the thread will die silently, which is worse.
+ if 'return' not in ret:
+ ret['return'] = "Unhandled exception running {0}".format(ret['fun'])
+ ret['success'] = False
+ ret['retcode'] = 254
finally:
try:
+ # Only attempt to return data to the master
+ # if the scheduled job is running on a minion.
+ if '__role' in self.opts and self.opts['__role'] == 'minion':
+ if 'return_job' in data and not data['return_job']:
+ pass
+ else:
+ # Send back to master so the job is included in the job list
+ mret = ret.copy()
+ mret['jid'] = 'req'
+ channel = salt.transport.Channel.factory(self.opts, usage='salt_schedule')
+ load = {'cmd': '_return', 'id': self.opts['id']}
+ for key, value in six.iteritems(mret):
+ load[key] = value
+ channel.send(load)
+
log.debug('schedule.handle_func: Removing {0}'.format(proc_fn))
os.unlink(proc_fn)
except OSError as exc:
@@ -757,11 +769,10 @@ class Schedule(object):
func = None
if func not in self.functions:
log.info(
- 'Invalid function: {0} in job {1}. Ignoring.'.format(
+ 'Invalid function: {0} in scheduled job {1}.'.format(
func, job
)
)
- continue
if 'name' not in data:
data['name'] = job
# Add up how many seconds between now and then
++++++ salt-2015.8-zypper-info.patch ++++++
diff --git a/salt/modules/zypper.py b/salt/modules/zypper.py
index ccba713..9d654a2 100644
--- a/salt/modules/zypper.py
+++ b/salt/modules/zypper.py
@@ -164,12 +164,14 @@ def info_available(*names, **kwargs):
# Run in batches
while batch:
cmd = 'zypper info -t package {0}'.format(' '.join(batch[:batch_size]))
- pkg_info.extend(re.split(r"----*", __salt__['cmd.run_stdout'](cmd, output_loglevel='trace')))
+ pkg_info.extend(re.split(r"Information for package*", __salt__['cmd.run_stdout'](cmd, output_loglevel='trace')))
batch = batch[batch_size:]
for pkg_data in pkg_info:
nfo = {}
for line in [data for data in pkg_data.split("\n") if ":" in data]:
+ if line.startswith("-----"):
+ continue
kw = [data.strip() for data in line.split(":", 1)]
if len(kw) == 2 and kw[1]:
nfo[kw[0].lower()] = kw[1]
++++++ zypper-utf-8.patch ++++++
--- /var/tmp/diff_new_pack.Bpkufl/_old 2016-01-26 10:14:46.000000000 +0100
+++ /var/tmp/diff_new_pack.Bpkufl/_new 2016-01-26 10:14:46.000000000 +0100
@@ -1,15 +1,40 @@
-diff -wruN -x '*~' -x '*.o' -x '*.a' -x '*.so' -x '*.so.[0-9]' -x autom4te.cache -x .deps -x .libs ../orig-salt-2015.8.3/salt/modules/zypper.py ./salt/modules/zypper.py
---- ../orig-salt-2015.8.3/salt/modules/zypper.py 2015-12-01 22:25:13.000000000 +0100
-+++ ./salt/modules/zypper.py 2015-12-09 09:15:41.157266587 +0100
-@@ -112,6 +112,11 @@
+From 8fcc530f0473e9fcd5a7099617516a6d184b5303 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= <kkaempf(a)suse.de>
+Date: Thu, 10 Dec 2015 13:21:41 +0100
+Subject: [PATCH] zypper: check package header content for valid utf-8
+
+"salt 'system.domain.tld' pkg.info_installed --out json" can crash with
+
+ [ERROR ] An un-handled exception was caught by salt's global exception handler:
+ UnicodeDecodeError: 'utf8' codec can't decode byte ...
+
+if a package name, summary, or description contains invalid UTF-8.
+
+This patch detects such rpm header values, logs them as errors, and
+replaces them with "*** Bad UTF-8 ***".
+
+Update: drop the 'errors=' named parameter from the encode() call as it
+is incompatible with Python 2.6 as used in SLE 11.
+---
+ salt/modules/zypper.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/salt/modules/zypper.py b/salt/modules/zypper.py
+index be28311ae1bd..483d63e08edc 100644
+--- a/salt/modules/zypper.py
++++ b/salt/modules/zypper.py
+@@ -115,6 +115,11 @@ def info_installed(*names):
t_nfo = dict()
# Translate dpkg-specific keys to a common structure
for key, value in pkg_nfo.items():
+ try:
-+ value = value.encode('UTF-8', errors='replace')
++ value = value.encode('UTF-8', 'replace')
+ except(UnicodeDecodeError):
-+ log.error('Package ' + pkg_name + ' has bad UTF-8 code in ' + key + ': ' + value)
++ log.error('Package {0} has bad UTF-8 code in {1}: {2}'.format(pkg_name, key, value))
+ value = '*** Bad UTF-8 ***'
if key == 'source_rpm':
t_nfo['source'] = value
else:
+--
+2.6.3
+
1
0
Hello community,
here is the log from the commit of package python-celery for openSUSE:Factory checked in at 2016-01-26 10:14:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-celery (Old)
and /work/SRC/openSUSE:Factory/.python-celery.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-celery"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-celery/python-celery.changes 2015-05-06 07:48:49.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-celery.new/python-celery.changes 2016-01-26 10:14:44.000000000 +0100
@@ -1,0 +2,32 @@
+Wed Jan 13 17:43:19 UTC 2016 - antoine.belvire(a)laposte.net
+
+- Update to 3.1.19:
+ * Requirements: Now depends on Kombu 3.0.29.
+ * Requirements: Now depends on billiard 3.3.0.21.
+ * Results: Fixed MongoDB result backend URL parsing problem
+ (Issue celery/kombu#375).
+ * Worker: Task request now properly sets priority in
+ delivery_info.
+ * Beat: PyPy shelve may raise KeyError when setting keys (Issue
+ #2862).
+ * Programs: celery beat --deatched now working on PyPy.
+ * Results: Redis result backend now ensures all pipelines are
+ cleaned up.
+ * Results: Redis result backend now allows for timeout to be set
+ in the query portion of the result backend URL.
+ * Results: result.get now properly handles failures where the
+ exception value is set to None (Issue #2560).
+ * Prefork pool: Fixed attribute error proc.dead.
+ * Worker: Fixed worker hanging when gossip/heartbeat disabled
+ (Issue #1847).
+ * Results: MongoDB result backend now supports pymongo 3.x (Issue
+ #2744).
+ * Results: RPC/amqp backends did not deserialize exceptions
+ properly (Issue #2691).
+ * Programs: Fixed problem with celery amqp‘s basic_publish (Issue
+ #2013).
+ * Worker: Embedded beat now properly sets app for thread/process
+ (Issue #2594).
+ * Documentation: Many improvements and typos fixed.
+
+-------------------------------------------------------------------
Old:
----
celery-3.1.18.tar.gz
New:
----
celery-3.1.19.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-celery.spec ++++++
--- /var/tmp/diff_new_pack.Ev72t0/_old 2016-01-26 10:14:45.000000000 +0100
+++ /var/tmp/diff_new_pack.Ev72t0/_new 2016-01-26 10:14:45.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-celery
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: python-celery
-Version: 3.1.18
+Version: 3.1.19
Release: 0
Url: http://celeryproject.org
Summary: Distributed Task Queue
@@ -26,14 +26,14 @@
Source: https://pypi.python.org/packages/source/c/celery/celery-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: python-SQLAlchemy
-BuildRequires: python-billiard
+BuildRequires: python-billiard >= 3.3.0.21
BuildRequires: python-cl
BuildRequires: python-curses
BuildRequires: python-dateutil
BuildRequires: python-devel
BuildRequires: python-eventlet
BuildRequires: python-gevent
-BuildRequires: python-kombu >= 3.0.25
+BuildRequires: python-kombu >= 3.0.29
BuildRequires: python-mock
BuildRequires: python-nose-cover3
BuildRequires: python-pyOpenSSL
++++++ celery-3.1.18.tar.gz -> celery-3.1.19.tar.gz ++++++
++++ 2542 lines of diff (skipped)
1
0