tools/librpm-tizen.git
12 years agopgpPubkeyFingerprint() can fail, propagate errors part II
Panu Matilainen [Tue, 25 Oct 2011 11:03:43 +0000 (14:03 +0300)]
pgpPubkeyFingerprint() can fail, propagate errors part II

- rpmPubkeyNew() needs to return NULL if we fail to grab the
  keyid, make it so...

12 years agopgpPubkeyFingerprint() can fail, propagate errors
Panu Matilainen [Tue, 25 Oct 2011 10:53:42 +0000 (13:53 +0300)]
pgpPubkeyFingerprint() can fail, propagate errors

- Rpm itself doesn't even use pgpExtractPubkeyFingerprint() anymore
  but there appear to be other users so leaving it alone for now,
  just behave sanely on errors.

12 years agoEliminate useless pgpIsPkt() helper function
Panu Matilainen [Mon, 24 Oct 2011 10:45:00 +0000 (13:45 +0300)]
Eliminate useless pgpIsPkt() helper function

- While I can imagine uses for such a function, our only caller is
  using it in a bogus way: decodePkts() is trying to avoid looking into
  binary-only data by calling it, but then pgpIsPkt() returns
  "not pgp tag" for various things that *are* pgp tags, making the
  whole thing just moot. If such checks are actually needed, we'd be better
  of checking for printable characters or such.

12 years agoEliminate broken pgpLen() from the API
Panu Matilainen [Mon, 24 Oct 2011 09:39:51 +0000 (12:39 +0300)]
Eliminate broken pgpLen() from the API

- pgpLen() only works for new format packets, and even for those
  its unsafe and cannot be fixed without breaking the API. Start
  by taking it behind the barn for further, err, operations. Rpm has
  no users outside rpmpgp.c now and anybody else using it will be
  better off not doing so.

12 years agoSanitize pgpsigFormat()
Panu Matilainen [Mon, 24 Oct 2011 09:21:01 +0000 (12:21 +0300)]
Sanitize pgpsigFormat()

- Eliminate bogus size calculations: we have a buffer of td->count size
  that may or may not contain legal OpenPGP signature. Leave it up to
  pgpPrtPkts() to validate & figure it out and check its return code instead,
  eliminating need to repeat a bunch of tedious calculations here.
- Use non-zero signature version is used as a hint for valid signature,
  should be "close enough" for the rest of the code.

12 years agoValid PGP packets are always at least two bytes long
Panu Matilainen [Mon, 24 Oct 2011 08:04:51 +0000 (11:04 +0300)]
Valid PGP packets are always at least two bytes long

- Old format tags encode the number of body length bytes in the packet
  header, new format encodes it in the first body length byte. In
  both cases there must be at least two bytes worth of data for it
  to be a valid header. Sanity check before accessing.

12 years agoFix unterminated buffer after readlink() call
Thomas Jarosch [Fri, 21 Oct 2011 21:05:54 +0000 (23:05 +0200)]
Fix unterminated buffer after readlink() call

readlink() never terminates the buffer.

Detected by "cppcheck" (git HEAD)

Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
12 years agoLog an error on signing if we can't even parse the gpg-generated signature
Panu Matilainen [Sun, 23 Oct 2011 11:23:12 +0000 (14:23 +0300)]
Log an error on signing if we can't even parse the gpg-generated signature

- The error message is not very helpful but if pgpPrtPkts() fails
  we dont have a whole lot clue in the caller why it failed, spitting
  out at least *some* error is better than silently failing
  (RhBug:748116, RhBug:719154)

12 years agoWarn but don't fail the build on missing excluded files (RhBug:745629)
Panu Matilainen [Sun, 23 Oct 2011 10:59:46 +0000 (13:59 +0300)]
Warn but don't fail the build on missing excluded files (RhBug:745629)

- If a file/directory is not to be packaged, there's not a whole lot
  point making the build fail if its missing. In case exclude is
  used to leave certain files to sub-packages, the sub-package file
  lists will catch out missing files that are really missing as a
  result of actual build failure or such (except perhaps for some
  glob cases but missing files can go unnoticed in those cases anyway)

12 years agoEliminate bunch of exit points in addFile()
Panu Matilainen [Sun, 23 Oct 2011 10:53:21 +0000 (13:53 +0300)]
Eliminate bunch of exit points in addFile()

- Assume failure, handle setting fl->processingFailed centrally at exit
  (file too large wasn't resulting in processingFailed getting set)

12 years agoFix ancient off-by-one at end boundary in string array size calculation
Panu Matilainen [Fri, 21 Oct 2011 08:49:53 +0000 (11:49 +0300)]
Fix ancient off-by-one at end boundary in string array size calculation

- String array size calculation could read one byte past data end
  pointer when expected count and number of \0's disagree (ie invalid data)
  due to while condition side-effects + bounds checking being in
  the inner loop.
- Lift the string length calculation to inline helper function, used for
  both string and string array types.
- Streamline the calculations:
  - Eliminate unnecessary length increments, calculate the length
    from pointer distance
  - Eliminate end pointer NULL checking within the loop: when caller
    doesn't supply end pointer, cap to HEADER_MAX_DATA (ie 16MB),
    anything larger would trip up in later hdrchkData() checks anyway.
  - Avoid the off-by-one by eliminating the problematic inner loop.

12 years agoVerify the entire region trailer, not just its offset, is within data area
Panu Matilainen [Thu, 20 Oct 2011 07:37:31 +0000 (10:37 +0300)]
Verify the entire region trailer, not just its offset, is within data area

- Offset being within the data area doesn't help if the actual data doesn't
  fit. Since the trailer size is well known, we can just as easily
  make the check accurate to prevent reading beyond end of data in case
  the offset is subtly wrong.
- In headerLoad(), region offset of zero doesn't need sanity checking,
  only validate if its something else and do so accurately there too.

12 years agoUpdate man page(s) verify output description to match current behavior
Panu Matilainen [Mon, 17 Oct 2011 06:27:34 +0000 (09:27 +0300)]
Update man page(s) verify output description to match current behavior

- Since addition of file capability verification in rpm 4.7.x,
  the verify output has nine characters, not eight (RhBug:746525)

12 years agoFix pretrans dependency calculation when provider is upgraded
Panu Matilainen [Wed, 12 Oct 2011 06:33:36 +0000 (09:33 +0300)]
Fix pretrans dependency calculation when provider is upgraded

- Pretrans-dependencies are twisty little beasts unlike anything else...
  When a pretrans-dependency provider is updated, the currently installed
  version is the provider for that transaction, unlike others where
  the packages from installing set act as providers for updates. So
  when looking up pretrans deps, we must not prune the to-be-erased
  packages from the db match iterators. As an added twist, we also
  must not cache these non-pruned cases as it would mess up the
  cache for "regular" dependencies.
- Fixes this case reported on fedora-devel:
  http://lists.fedoraproject.org/pipermail/devel/2011-October/158058.html

12 years agorpmio: Set a umask before using mkstemp()
Mukund Sivaraman [Fri, 30 Sep 2011 10:04:44 +0000 (15:34 +0530)]
rpmio: Set a umask before using mkstemp()

This commit sets a restrictive umask before calling mkstemp().
This is because the permissions of files created by mkstemp() are
not defined in POSIX. Old versions of glibc created files with
mode 0666 which can be a security hole. Because the behavior is
implementation-dependent, we set a umask.

12 years agorpmio: Don't de-ref lzfile which was freed in lzclose()
Mukund Sivaraman [Thu, 29 Sep 2011 07:09:13 +0000 (12:39 +0530)]
rpmio: Don't de-ref lzfile which was freed in lzclose()

12 years agobuild: Update .gitignore rules
Mukund Sivaraman [Thu, 29 Sep 2011 07:09:12 +0000 (12:39 +0530)]
build: Update .gitignore rules

12 years agoLet headerLoad() failure message come through
Panu Matilainen [Tue, 11 Oct 2011 07:31:40 +0000 (10:31 +0300)]
Let headerLoad() failure message come through

- headerVerify() always returns with a message even for OK results,
  which was masking the error message from headerLoad(), sometimes
  giving not very helpful "headerRead failed: Header sanity check OK"
  style messages.

12 years agoEliminate headerCheckPayloadFormat() from the API
Panu Matilainen [Thu, 6 Oct 2011 12:16:47 +0000 (15:16 +0300)]
Eliminate headerCheckPayloadFormat() from the API

- While we're on API killing spree... Exporting this was needless and
  dumb to begin with (greetings to self in 2007...), bury it inside
  depends.c as static and let rot there.
- Might be a better idea to kill it completely with some other
  mechanism such as turning payload format into rpmlib() dependency
  internally but just get it out of public sight for now.

12 years agoEliminate headerMergeLegacySigs() from the API
Panu Matilainen [Thu, 6 Oct 2011 12:13:22 +0000 (15:13 +0300)]
Eliminate headerMergeLegacySigs() from the API

- No need to export this in the API - if you want merged signature
  tags you use rpm's package reading functions.

12 years agoEliminate leftover headerRegenSigHeader() function
Panu Matilainen [Thu, 6 Oct 2011 12:05:11 +0000 (15:05 +0300)]
Eliminate leftover headerRegenSigHeader() function

- This was only ever used by repackage support inside rpm and has been
  orphan since 2008, likely more than just a little broken too as it
  doesn't know about 64bit types and all. RIP.

12 years agoOnly bother allocating a pgpDig when needed
Panu Matilainen [Thu, 6 Oct 2011 10:06:28 +0000 (13:06 +0300)]
Only bother allocating a pgpDig when needed

- Now that rpmVerifySignature() doesn't require a non-null dig
  for digests, don't bother allocating one unless necessary.
- pgpNewDig() cannot fail so dont bother checking.

12 years agoEliminate redundant NULL-checks in lower level sigchecking functions
Panu Matilainen [Thu, 6 Oct 2011 09:56:13 +0000 (12:56 +0300)]
Eliminate redundant NULL-checks in lower level sigchecking functions

- sigtd->data and dig checking (where needed) is done at
  rpmVerifySignature() level, dont bother double-checking
- Hash context is dup'ed, which CAN fail, so while we dont need
  to check the argument for non-null, the dup result needs to
  be checked for digests. For actual signatures the dup happens
  elsewhere, we dont need to check the argument for non-null here.

12 years agoSanitize rpmVerifySignature() a bit
Panu Matilainen [Thu, 6 Oct 2011 09:49:18 +0000 (12:49 +0300)]
Sanitize rpmVerifySignature() a bit

- Hash context is required for everything, require non-NULL ctx
  in rpmVerifySignature() already
- pgpDig is only relevant for true signature, digest checking doesn't
  need it - dont require dummy dig to be passed for digests.
- Treat unknown signatures as a case of bad parameters: we're the
  only caller of rpmVerifySignature() so it'd be us screwing up if
  we ask for unknown signature to be verified.
- Treat bad parameters as a hard failure instead of "not found",
  bad parameters mean we cannot verify the signature which really
  equals FAIL.

12 years agoAlso add RPMTAG_OPTFLAGS during spec parse since we easily can...
Panu Matilainen [Thu, 6 Oct 2011 08:14:05 +0000 (11:14 +0300)]
Also add RPMTAG_OPTFLAGS during spec parse since we easily can...

12 years agoAdd implicit self-provides during spec parse already
Panu Matilainen [Thu, 6 Oct 2011 08:02:31 +0000 (11:02 +0300)]
Add implicit self-provides during spec parse already

- Makes the self-provides accessible on spec parse queries, shouldn't
  affect anything else.

12 years agoSplit signature/digest verification out of headerVerify()
Panu Matilainen [Wed, 5 Oct 2011 13:54:15 +0000 (16:54 +0300)]
Split signature/digest verification out of headerVerify()

- headerVerify() is big enough without having all the signature
  goo inline, just lift the whole signature/digest business into
  separate function. Supposedly no functional changes...

12 years agoUnobfuscate header digest calculation in headerVerify()
Panu Matilainen [Wed, 5 Oct 2011 12:08:07 +0000 (15:08 +0300)]
Unobfuscate header digest calculation in headerVerify()

- Assigning goo to temporary variables for calling rpmDigestUpdate()
  doesn't make it any more readable, more the contrary. Also
  don't bother with htonl() (calls that should've been ntohl()
  for "correctness") when we have the data elsewhere in host order already.

12 years agoUnobfuscate headerVerify() exit logic
Panu Matilainen [Wed, 5 Oct 2011 11:46:12 +0000 (14:46 +0300)]
Unobfuscate headerVerify() exit logic

- Jumping forwards is one thing, jumping backwards and forwards to an
  exit label residing in the middle of a function is something else...
  Refactor to single point of exit, at the end of the function.
- Handle the no header-only signature/digest case (whether disabled
  or v3 package) and cleanup centrally at the exit label, everything
  falls through there now.

12 years agoEliminate pointless exit label from headerVerify()
Panu Matilainen [Wed, 5 Oct 2011 10:58:33 +0000 (13:58 +0300)]
Eliminate pointless exit label from headerVerify()

- pgpNewDig() like most rpm "constructor" functions cannot fail,
  no point checking the result. Allows an icky backwards goto + label
  to be eliminated.

12 years agoPush couple of variables to more local scope
Panu Matilainen [Tue, 4 Oct 2011 12:35:42 +0000 (15:35 +0300)]
Push couple of variables to more local scope

- No functional changes, just preparing to tidy up the headerVerify()
  monster a bit.

12 years agoEliminate redundant local variable in headerLoad()
Panu Matilainen [Tue, 4 Oct 2011 11:59:49 +0000 (14:59 +0300)]
Eliminate redundant local variable in headerLoad()

12 years agoSanity check region length on header load
Panu Matilainen [Mon, 3 Oct 2011 14:49:29 +0000 (17:49 +0300)]
Sanity check region length on header load

- Region size can't obviously be larger than the containing header,
  sanity check to avoid crashes from malformed packages.
- We should really test for length equality here, but with dribbles
  the size is sometimes off by three, whatever the reason (bug likely),
  leaving that investigation for some sunnier day...

12 years agoSanity check OpenPGP packet lengths in pgpPrtSubType()
Panu Matilainen [Fri, 30 Sep 2011 12:28:00 +0000 (15:28 +0300)]
Sanity check OpenPGP packet lengths in pgpPrtSubType()

- Sub-packet prefix length + packet length can't very well be larger
  than the remaining packet length. In addition to sanity checking,
  return an error code and have callers actually check for it.
- Fixes (yet another) segfault on malformed package (RhBug:742499)

12 years agoSanity check region offset range on headerLoad()
Panu Matilainen [Thu, 29 Sep 2011 10:22:32 +0000 (13:22 +0300)]
Sanity check region offset range on headerLoad()

- Fixes the  first case crash of RhBug:741606 / CVE-2011-3378 where
  immutable region offset is way out of bounds.

12 years agoSanity check region offset in regionSwab()
Panu Matilainen [Thu, 29 Sep 2011 09:50:57 +0000 (12:50 +0300)]
Sanity check region offset in regionSwab()

- Region offsets are supposed to be negative when when an entry
  is involved, otherwise zero. Fixes some cases of crash'n'burn on
  malformed headers having bogus offsets (CVE-2011-3378)

12 years agoWhoops, ftell() and rpmio equivalents should return long not off_t
Panu Matilainen [Thu, 15 Sep 2011 12:01:27 +0000 (15:01 +0300)]
Whoops, ftell() and rpmio equivalents should return long not off_t

12 years agoFix up a few strict-prototype warnings on x86
Panu Matilainen [Thu, 15 Sep 2011 11:58:19 +0000 (14:58 +0300)]
Fix up a few strict-prototype warnings on x86

12 years agoKick out ppc arch detection leftovers
Panu Matilainen [Thu, 15 Sep 2011 09:21:21 +0000 (12:21 +0300)]
Kick out ppc arch detection leftovers

- This should've been in commit 6e2f56fe25a9ee62af51e0408861a8a43c97a709
  all the way back then, unused ever since...

12 years agoEliminate hysterical copy-paste comments from rpmrc
Panu Matilainen [Thu, 15 Sep 2011 09:06:50 +0000 (12:06 +0300)]
Eliminate hysterical copy-paste comments from rpmrc

12 years agoBit of rpmrc spring-cleaning: nuke detection for some extinct creatures
Panu Matilainen [Thu, 15 Sep 2011 09:05:52 +0000 (12:05 +0300)]
Bit of rpmrc spring-cleaning: nuke detection for some extinct creatures

12 years agoAdd Transifex config + adjust .gitignore to track it
Panu Matilainen [Tue, 13 Sep 2011 11:11:14 +0000 (14:11 +0300)]
Add Transifex config + adjust .gitignore to track it

12 years agoNuke ancient ChangeLog in po/
Panu Matilainen [Tue, 13 Sep 2011 11:07:29 +0000 (14:07 +0300)]
Nuke ancient ChangeLog in po/

12 years agoUse POPT_BIT_SET for setting the scriptlet flags
Panu Matilainen [Mon, 12 Sep 2011 10:26:42 +0000 (13:26 +0300)]
Use POPT_BIT_SET for setting the scriptlet flags

- No functional changes, just avoid doing extra work for what popt
  can already do for us.

12 years agoActually remember scriptlet flags in the rpmScript struct
Panu Matilainen [Mon, 12 Sep 2011 10:02:13 +0000 (13:02 +0300)]
Actually remember scriptlet flags in the rpmScript struct

- Currently doesn't make any difference but since we actually
  have a flags member in the struct, might as well use it. Also
  we'll shortly be needing these during the actual execution too.

12 years agoRename scriptlet flags from RPMSCRIPT_FOO to RPMSCRIPT_FLAG_FOO
Panu Matilainen [Mon, 12 Sep 2011 09:54:48 +0000 (12:54 +0300)]
Rename scriptlet flags from RPMSCRIPT_FOO to RPMSCRIPT_FLAG_FOO

- No functional changes (and this is still internal-only API),
  just making more obvious what they are and clearing the
  RPMSCRIPT_FOO namespace for possible future use for the scriptlet
  types themselves.

12 years agoShow all interpreter arguments on --scripts query (ticket #847)
Panu Matilainen [Mon, 12 Sep 2011 09:19:15 +0000 (12:19 +0300)]
Show all interpreter arguments on --scripts query (ticket #847)

- Previously any arguments to interpreter were invisible unless
  you happened to know that RPMTAG_FOOPROG are actually string
  arrays despite their type showing plain string, and queried
  as arrays. This makes all the arguments for all scriptlets
  supporting interpreter arguments visible on --scripts query
  and also serves as an example on how to properly query them.i
- Perhaps worth noting is the exact formatting of the query:
  "(using[ %{PRETRANSPROG}]" instead of the more typical style of
  "(using [%{PRETRANSPROG} ]" to avoid extra trailing blanks.

12 years agoShow possible %verifyscript interpreter similarly to other scriptlets
Panu Matilainen [Mon, 12 Sep 2011 09:10:29 +0000 (12:10 +0300)]
Show possible %verifyscript interpreter similarly to other scriptlets

12 years agoScriptlet argument tags are really arrays
Panu Matilainen [Mon, 12 Sep 2011 08:43:11 +0000 (11:43 +0300)]
Scriptlet argument tags are really arrays

- While the vast majority of scriptlet interpreters only consist
  of the interpreter name itself, they all can consist of arbitrary
  number of extra arguments. Rpm itself doesn't really care whether
  the tags are strings or string arrays but the scalar definition
  causes the rest of arguments to be invisible from eg python.
  Also having the type shown as string array hints at the proper
  query format when accessing these (and rpm itself is doing it
  wrong too in --scripts alias). Related to ticket #847.

12 years agoSanity check trigger scriptlet arguments on build
Panu Matilainen [Mon, 12 Sep 2011 08:36:27 +0000 (11:36 +0300)]
Sanity check trigger scriptlet arguments on build

- Trigger scriptlets differ from other types in that additional
  arguments to scriptlet interpreter are not supported due to the
  way trigger data is stored in the header. Until now any extra
  arguments have just been quietly discarded, make it an hard
  error to avoid surprises.

12 years agoFix brp-python-bytecompile breakage from the recent whitespace patch
Panu Matilainen [Tue, 6 Sep 2011 19:37:42 +0000 (22:37 +0300)]
Fix brp-python-bytecompile breakage from the recent whitespace patch

12 years agoUse the new FOO_NEVRS extensions for --requires etc popt aliases
Panu Matilainen [Tue, 6 Sep 2011 13:12:15 +0000 (16:12 +0300)]
Use the new FOO_NEVRS extensions for --requires etc popt aliases

- Makes the popt foobar somewhat saner and fixes RhBug:717534 and
  RhBug:735801 while at it.

12 years agoAdd four new extension tags for pretty-formatting dependencies
Panu Matilainen [Tue, 6 Sep 2011 12:58:35 +0000 (15:58 +0300)]
Add four new extension tags for pretty-formatting dependencies

- The current method that --requires and friends use is kinda
  cumbersome and outputs extra whitespace for dependencies which
  dont have flags+version attached. Adding extensions for this
  is likely to be easier than teaching query formatting to
  permit conditionalizing on current value instead of just tag existence.

12 years ago$RPM_BUILD_ROOT breaks brp-* scripts if it contains spaces (ticket #843)
Jeff Tickle [Tue, 6 Sep 2011 06:52:19 +0000 (09:52 +0300)]
$RPM_BUILD_ROOT breaks brp-* scripts if it contains spaces (ticket #843)

- This patch adds quotes around $RPM_BUILD_ROOT in places that I noticed
  they were missing, and attempts to handle some of the problems that can
  occur when looping over the output of find.

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
12 years agoManual typo fix.
Ville Skyttä [Mon, 29 Aug 2011 18:35:30 +0000 (21:35 +0300)]
Manual typo fix.

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
12 years agoSync autoconf macro defaults in manual with the macros file.
Ville Skyttä [Mon, 29 Aug 2011 18:34:02 +0000 (21:34 +0300)]
Sync autoconf macro defaults in manual with the macros file.

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
12 years agoMake --pipe command failures reflect our exit codes (RhBug:735481)
Panu Matilainen [Mon, 5 Sep 2011 05:38:31 +0000 (08:38 +0300)]
Make --pipe command failures reflect our exit codes (RhBug:735481)

12 years agoMake rpmScript opaque
Panu Matilainen [Fri, 2 Sep 2011 09:56:55 +0000 (12:56 +0300)]
Make rpmScript opaque

- Add accessor for fetching the script tag, the final piece that
  psm needs (and will continue to do so) from script internals.
  This allows the script type to become opaque for real.

12 years agoAdd an API for creating real rpmScript items out of triggers, use it
Panu Matilainen [Fri, 2 Sep 2011 09:43:53 +0000 (12:43 +0300)]
Add an API for creating real rpmScript items out of triggers, use it

- Bury rpmScriptNew() into being internal helper in rpmscript -
  triggers and other scripts differ quite a bit in how their data
  is laid out in the header, especially args need "special attention".
- Besides cleaning up things in the psm side, this technically makes
  trigger scripts runnable without having a header at hand. Of course
  currently trigger scripts are currently created and destroyed
  on the spot from headers so this is of academic interest...

12 years agoFirst step towards unifying triggers into rpmScript API
Panu Matilainen [Fri, 2 Sep 2011 07:54:00 +0000 (10:54 +0300)]
First step towards unifying triggers into rpmScript API

- Add a lower level script creation function to deal with the
  body expansions and such, use it for triggers as well.
- This is still fairly ugly but its something that can be reasonably
  backported to 4.9.x which needs this too, as currently triggers
  are forgetting to set script->descr, causing "(null) failure" messages
  on glibc and on others, in would just crash on trigger failure
  and/or in debug verbosity level.

12 years agoFix up one strict-prototype warning that has crept in meantime
Panu Matilainen [Thu, 1 Sep 2011 17:29:30 +0000 (20:29 +0300)]
Fix up one strict-prototype warning that has crept in meantime

12 years agoGCC warning option tweaks
Panu Matilainen [Thu, 1 Sep 2011 17:26:13 +0000 (20:26 +0300)]
GCC warning option tweaks

- WTH are we compiling with -Wno-char-subscripts? This appears to have
  been there since the dawn of times, and at least nowadays removing
  it causes no new warnings.
- Re-enable -Wstrict-prototypes, either NSS headers have gotten fixed
  or GCC has gotten smarter and no longer whines about broken
  system headers.

12 years agoOops, RPMSENSE_PRETRANS and _POSTTRANS missing from python bindings
Panu Matilainen [Thu, 1 Sep 2011 11:23:28 +0000 (14:23 +0300)]
Oops, RPMSENSE_PRETRANS and _POSTTRANS missing from python bindings

12 years agoDon't add config() provides if config install is disabled
Panu Matilainen [Thu, 1 Sep 2011 10:50:55 +0000 (13:50 +0300)]
Don't add config() provides if config install is disabled

- Similarly to commit 40ee8e7427ace319687dd36bd5f745d1ef2f2236,
  take --noconfigs into account for the virtual config() provides too

12 years agoDon't add file provides for doc/config files if they wont be installed
Panu Matilainen [Thu, 1 Sep 2011 10:40:50 +0000 (13:40 +0300)]
Don't add file provides for doc/config files if they wont be installed

- Files which dont get installed cannot very well satisfy dependencies,
  take this into account for docs and configs when --nodocs & --noconfigs
  flags are used.

12 years agoPass tsflags to rpmal and remember them
Panu Matilainen [Thu, 1 Sep 2011 10:19:18 +0000 (13:19 +0300)]
Pass tsflags to rpmal and remember them

- No functional changes here, but we'll need to know some of these
  bits for accurately calculating various dependency bits later on.

12 years agoSource formatting cosmetics: function blocks start on the next line
Panu Matilainen [Thu, 1 Sep 2011 09:55:30 +0000 (12:55 +0300)]
Source formatting cosmetics: function blocks start on the next line

12 years agoOnly consider installed files when looking at removed dependencies
Panu Matilainen [Thu, 1 Sep 2011 09:39:06 +0000 (12:39 +0300)]
Only consider installed files when looking at removed dependencies

- Non-installed files cannot very well have dependencies, this
  eliminates some bogosities from those cases.

12 years agoAdd RPMTAG_INSTFILENAMES tag extension for state-aware file lists
Panu Matilainen [Thu, 1 Sep 2011 09:11:13 +0000 (12:11 +0300)]
Add RPMTAG_INSTFILENAMES tag extension for state-aware file lists

- For a more consistent experience wrt all the state-awareness stuff,
  this needs to be easily querifiable too.
- Also makes the tagnames kludgery from commit
  cac8c389607d7a5735b2905035fdfe4404670d06 unnecessary

12 years agoAdd + use helper macro for testing for installed file state
Panu Matilainen [Thu, 1 Sep 2011 09:07:30 +0000 (12:07 +0300)]
Add + use helper macro for testing for installed file state

12 years agoOops, missing include for rpmFreeMacros() in python module
Panu Matilainen [Thu, 1 Sep 2011 08:20:54 +0000 (11:20 +0300)]
Oops, missing include for rpmFreeMacros() in python module

- This should've been in commit f07ab5c1afa9b0b7105082a8617ec6a7657fc27e

12 years agoAvoid SystemError on inserting an empty list insert to header from python
Panu Matilainen [Thu, 1 Sep 2011 06:40:52 +0000 (09:40 +0300)]
Avoid SystemError on inserting an empty list insert to header from python

12 years agoAdd method to reset + reload rpm configuration to python bindings
Panu Matilainen [Thu, 1 Sep 2011 05:31:04 +0000 (08:31 +0300)]
Add method to reset + reload rpm configuration to python bindings

12 years agoRemember ds color (if set) through rpmdsCurrent()
Panu Matilainen [Wed, 31 Aug 2011 08:09:03 +0000 (11:09 +0300)]
Remember ds color (if set) through rpmdsCurrent()

- Currently only dependency sets coming from transaction elements
  get colored, only bother allocating memory for non-zero color.

12 years agoOops, forgot to add the instfilenames pseudo index to tag lookup code
Panu Matilainen [Wed, 31 Aug 2011 08:07:32 +0000 (11:07 +0300)]
Oops, forgot to add the instfilenames pseudo index to tag lookup code

- DBI tags dont really belong there to begin with but changing this
  would be more painful than its worth...

12 years agoUse RPMDBI_INSTFILENAMES on file queries as well
Panu Matilainen [Mon, 29 Aug 2011 13:19:32 +0000 (16:19 +0300)]
Use RPMDBI_INSTFILENAMES on file queries as well

- This changes query behavior quite a bit as files with non-installed
  status are no longer returned as matches. The rationale is that
  it makes figuring out dependency issues with the "new" behavior
  more obvious (but perhaps we should have a switch to enable
  former behavior). Besides not satisfying dependencies, files with
  non-installed status are not really owned by the package, as they
  would not be removed on package removal.

12 years agoTake advantage on RPMDBI_INSTFILENAMES in rpmdbProvides()
Panu Matilainen [Mon, 29 Aug 2011 12:49:08 +0000 (15:49 +0300)]
Take advantage on RPMDBI_INSTFILENAMES in rpmdbProvides()

- No functional changes, we did the same thing "manually" here already.
  Only now the data is more conveniently available through API to
  other callers who might care (yum & friends)

12 years agoAdd a new pseudo index for actually installed files
Panu Matilainen [Mon, 29 Aug 2011 12:43:15 +0000 (15:43 +0300)]
Add a new pseudo index for actually installed files

- RPMDBI_BASENAMES (ugh) returns all headers with matching filenames,
  whether the files are actually installed or not, which can be
  rather misleading when dealing with file dependencies. The new
  RPMDBI_INSTFILENAMES only returns headers with matching filenames
  whose state indicates they are actually present on the system.

12 years agoGeneralize pseudo tag handling in rpmdbInitIterator()
Panu Matilainen [Mon, 29 Aug 2011 12:23:02 +0000 (15:23 +0300)]
Generalize pseudo tag handling in rpmdbInitIterator()

- No functional changes, just makes the case where a pseudo index
  uses a differently numbered underlying physical db index more generic.

12 years agoUse correct file state for colored file replacements
Panu Matilainen [Mon, 29 Aug 2011 11:04:28 +0000 (14:04 +0300)]
Use correct file state for colored file replacements

- On colored file conflict resolution, the non-preferred colored
  file state would depend on installation order: if non-preferred
  arch is installed first, and the preferred arch in another
  transaction, the non-preferred color would get marked "replaced"
  indicating a forced install when none was used. This fixes
  the file state in such cases to "wrong color" to be consistent
  of the other installation scenarios.

12 years agoAdd test for ts.clear() as a side-effect of add to ts test
Panu Matilainen [Thu, 25 Aug 2011 09:29:48 +0000 (12:29 +0300)]
Add test for ts.clear() as a side-effect of add to ts test

12 years agoExport rpmtsEmpty() to python as ts.clear()
Panu Matilainen [Thu, 25 Aug 2011 09:02:48 +0000 (12:02 +0300)]
Export rpmtsEmpty() to python as ts.clear()

- Why the heck hasn't this been exported before, duh?
- Method name clear() chosen as this appears to be emerging as a
  standard of sorts for this kind of operation: dictionaries and
  sets have it and list will get it in some python 3.x version.
  Additionally foo.empty() could easily be mistaken for "test whether
  container foo is empty or not" (especially those with c++ background...)

12 years agoRemove support for ancient bzip2 library versions
Panu Matilainen [Fri, 19 Aug 2011 07:19:58 +0000 (10:19 +0300)]
Remove support for ancient bzip2 library versions

- bzip2 1.0 is over ten years old by now, anybody still using versions
  older than that get what they deserve...

12 years agoRemove unused FDFOO macros
Panu Matilainen [Fri, 19 Aug 2011 07:00:32 +0000 (10:00 +0300)]
Remove unused FDFOO macros

12 years agoHandle query format field width centrally in formatValue()
Panu Matilainen [Wed, 17 Aug 2011 07:59:49 +0000 (10:59 +0300)]
Handle query format field width centrally in formatValue()

- Eliminate the quirky formatPrefix buffer argument to formatter functions,
  deal with the width at formatValue() if specified.
- This not only simplifies things a great deal, removes a nasty
  unbounded buffer writing from formatter functions and speeds things
  up somewhat by removing extra rasprintf()'s in many cases, it also
  gives us width formatting of everything including "error messages"
  like "(none)" and "(not a number)" which previously got dumped without
  any formatting.
- The cost of this is the loss of zero padding support for numeric
  data but that's hardly a big deal.

12 years agoTake length of format width specifier into account for format string buffer
Panu Matilainen [Wed, 17 Aug 2011 06:03:44 +0000 (09:03 +0300)]
Take length of format width specifier into account for format string buffer

- Prevents buffer overflow in case of ridiculous field width specifiers
  like --qf "%100000000000000000000000000{name}". There's another similar
  static-sized buffer in rpmtdFormat() but there we're not dealing
  with user-speficied format strings so its okay even if ugly.
- The format string handling wants a bigger overhaul but this makes
  for a nice little backportable patch for starters.

12 years agoValidate query format field width specifier is sane
Panu Matilainen [Wed, 17 Aug 2011 05:17:13 +0000 (08:17 +0300)]
Validate query format field width specifier is sane

- Only allow [[-]<number>] in the format field, users have no business
  telling which format conversion sprintf() should use for tag data.
  Fixes embarrassing segfaults from things like %s{size} which rpm
  has merrily passed on to sprintf() as-is.

12 years agoStrip trailing slash from paths at addFile()
Panu Matilainen [Tue, 2 Aug 2011 09:39:51 +0000 (12:39 +0300)]
Strip trailing slash from paths at addFile()

- Fixes regression from commit 23167c3ea459405c98d8e759993efb6d9b1ea7f3
  which causes all %dir entries to have a trailing slash, breaking
  at least dependencies on such directories and probably something
  else as well.

12 years agopgpVerifySig() check of NULL hash is the wrong way around
Panu Matilainen [Tue, 2 Aug 2011 09:22:52 +0000 (12:22 +0300)]
pgpVerifySig() check of NULL hash is the wrong way around

- NULL hash is pretty much a can't happen-case here but lets be
  sane if it happens afterall - NULL hash would be an error and
  we dont want to process the rest if that happened.

12 years agoRestore %defattr() behavior on special %doc
Michael Schroeder [Tue, 2 Aug 2011 09:20:35 +0000 (12:20 +0300)]
Restore %defattr() behavior on special %doc

- With the change in the defattr handling (commit 09efbe96), you also
  need to save the current defattr setting when processing %doc.
  Otherwise doc files will just get the value from the latest defattr line.

12 years agoFix misleading error message when gpg key is expired (RhBug:672727)
Jindrich Novy [Mon, 1 Aug 2011 11:54:43 +0000 (13:54 +0200)]
Fix misleading error message when gpg key is expired (RhBug:672727)

13 years agoSanity check signatures even if we dont have a key
Panu Matilainen [Thu, 14 Jul 2011 11:05:32 +0000 (14:05 +0300)]
Sanity check signatures even if we dont have a key

- Fixes a regression originating all the way back from commit
  c7fc09d585ff3831924f72f61d990aa791f2c3f2 (ie rpm >= 4.8.0)
  where a package with a bogus signature can slip through undetected
  if we dont have a key for it.
- This additional sanity check on the signature prevents is enough
  to prevent the fuzzed package in RhBug:721225 from crashing us
  by stopping the bad package at the front door. That we don't have
  proper tag data validation is another, much wider issue...

13 years agoFix memleak on keys with more than one user id
Panu Matilainen [Wed, 13 Jul 2011 13:19:01 +0000 (16:19 +0300)]
Fix memleak on keys with more than one user id

- This is not "correct", we should permit more than one user id.
  Leaking memory is still worse than not leaking, corrent behavior
  or not.

13 years agoFix crash on PGP packets/armors with more than one key (RhBug:667582)
Panu Matilainen [Wed, 13 Jul 2011 13:05:34 +0000 (16:05 +0300)]
Fix crash on PGP packets/armors with more than one key (RhBug:667582)

- While OpenPGP permits arbitrary number of keys per packet/armor,
  we can't handle more than one, error out early.  The poor user
  wont get much of a clue as to what went wrong, but thats still
  better than crashing and burning.
- Return NULL from pgpPrtPubkeyParams() on errors and pass it onwards
  from pgpPrtKey() which propagates it up to callers. Besides
  the crash, this also fixes the error path from pgpNewPublicKey()
  failures.

13 years agoOops, rpmPubkeyDig() should return NULL if pgpPrtPkts() fails
Panu Matilainen [Wed, 13 Jul 2011 12:46:21 +0000 (15:46 +0300)]
Oops, rpmPubkeyDig() should return NULL if pgpPrtPkts() fails

13 years agoOnly increment number of query/verify sources when we encounter new types
Panu Matilainen [Wed, 13 Jul 2011 11:03:32 +0000 (14:03 +0300)]
Only increment number of query/verify sources when we encounter new types

- This makes it legal to specify the same query/verify source more
  than once. Not that it makes a whole lot of sense to do so, but
  complaining "only one type of query/verify permitted at a time" seems
  silly as well if you're just (accidentally) specifying the same
  source twice. Besides, this makes the code a bit cleaner.
- Kinda related to RhBug:691930.

13 years agoFix the sanity check on number of query/verify sources (RhBug:691930)
Panu Matilainen [Wed, 13 Jul 2011 10:56:15 +0000 (13:56 +0300)]
Fix the sanity check on number of query/verify sources (RhBug:691930)

- Prior to commit 2e672f3fae9d8ff7ee64ae13cfa2fe65272c2ede, the
  callback would get called twice for every option so the expected
  number of query/verify sources was doubled. Now the numbers
  match with reality, adjust the check.

13 years agoWhoops, wrong variable passed to io debugging
Panu Matilainen [Tue, 12 Jul 2011 07:51:07 +0000 (10:51 +0300)]
Whoops, wrong variable passed to io debugging

13 years agoCleanup fdRead(), fdWrite() and fdSeek() a bit
Panu Matilainen [Mon, 11 Jul 2011 09:37:12 +0000 (12:37 +0300)]
Cleanup fdRead(), fdWrite() and fdSeek() a bit

- Remove unnecessary fluff, these are very simple operations
  and dont need any temporary variables, re-re-redundant NULL checking
  etc, its already done at the caller level.

13 years agoCosmetics: remove empty comments and such
Panu Matilainen [Mon, 11 Jul 2011 09:33:31 +0000 (12:33 +0300)]
Cosmetics: remove empty comments and such