Satoshi's bitcoind implementation bugs I have seen referred in a couple of locations (bitcd and bitcoinj) that fully verifying clients should match the satoshi bitcoind client implementation, including its bugs, presumably to prevent splitting the blockchain.

I guess the bugs that need replicating are in the block acceptance rules, however I failed to find any specific references to the issues in question. The main Bitcoin Protocol Specification doesn't seem to mention any.

Can someone please explain (or link to a document that explains) these bugs?

Edit: The references that triggered my curiosity are the following (my emphasis):

From bitcd : 


  It currently properly downloads, validates, and serves the block chain
  using the exact rules (including bugs) for block acceptance as the
  reference implementation (bitcoind).


From bitcoinj: 


  To be safe, bitcoinj must match the behavior of Satoshis code exactly,
  including all the bugs. Any deviation at all can be potentially used
  to split the consensus.
I'll try to give a list of the cases I know of. Whether these are considered bugs or implementation oddnesses is debatable, I guess.


The genesis block's coinbase output cannot be spent.
The OP_CHECKMULTISIG and OP_CHECKMULTISIGVERIFY operations pop one element too much from the stack (requiring an extra dummy push in the redeem script).
The checksig operations in a coinbase's scriptSig count towards the sigop limit of a block, even though that script can never be executed.
Encoded public keys and signatures are valid if and only if OpenSSL accepts them, including the many non-standard or simply broken encodings it accepts. Since 0.8, such non-canonical encodings are considered non-standard, but still valid inside blocks.